2012-01-25 9 views
0

私はOpen TBを使ってOpenCV v2.3.1をビルドしようとしています。私はCMakeを使ってVisual Studio 2010ソリューションを生成しました。ビルドは成功し、出力の中にopencv_core231d.libがあります。.libから別の.libへの依存

今、opencv_core231d.libと私のプロジェクトをリンクしようとしています。ただし、リンカ - >追加の依存関係で指定した後、エラーLNK1104が表示されます。ファイル 'tbb_debug.lib'を開くことができません。

未解決の外部に関するエラーではありません。リンカは私からの特定の.libファイルを望んでいます!どのようにすることができますか?

私はopencv_core231d.libのdumpbin /allをやったし、いくつかのセクションのために、それは私に語った:

Linker Directives 
----------------- 
... 
/DEFAULTLIB:"tbb_debug.lib" 
... 

私は私のプロジェクトの/ NODEFAULTLIBリンカオプションにtbb_debug.libを追加しようとしましたが、それは問題を解決しました。しかし、私はTBBをopencv_core231d.libにリンクさせたいだけです。

奇妙なことに、tbb_debug.libがopencv_core231d.libの/ DEFAULTLIBオプションに追加された理由が見つかりません。私は、tbb_debug.libに言及しているソリューションディレクトリ内のすべてのファイルを部分文字列として検索しましたが、唯一の一致は生成された.objファイルと.libファイルであり、ソースファイルやプロジェクトファイルにはありませんでした。魔法はどこですか?

この質問は、OpenCVに関連するだけでなく、.lib-filesで作業する全プロセスに関連しています。

更新

TBBで#pragma comment(lib, "tbb_debug.lib")指示があったファイル_tbb_windef.hを含め、今私はそれを行ったのどこから理解することができます。

まだ分かりませんが、なぜopencv_core231d.libに静的にリンクされていないのですか?ライブラリアン - >ライブラリの依存関係を「はい」に設定しました。私のプロジェクトには#pragma comment(lib, "tbb_debug.lib")という指令はありません。私はプリプロセッサの出力をチェックしました。

ありがとうございました。

+0

私の現在の理論では、なぜ静的リンケージが発生しないのかは、tbb_debug.libが対応するtbb_debug.dllのスタブ-Libだけであるためです。 – Mikhail

答えて

1

おそらくのいずれかがあなたのヘッダーファイルのどこかにあります。

これは、インテルのスレッド構築ブロックを使用することと関連しています。詳細については、このブログ記事を参照してください。http://software.intel.com/en-us/blogs/2008/07/07/get-tbb-going-by-a-single-click/

+0

HAVE_TBBマクロは重要です。 –

+0

あなたは正しいです、ありがとう、しかし質問はまだ存在します。私のポストの更新セクションを参照してください。 – Mikhail

+0

リンクライブラリの依存関係オプションは、ヘッダーから継承したリンカーディレクティブではなく、プロジェクト - >プロジェクト参照を処理します。 libのリンクコマンドラインを見てください - tbb_debugは存在しません。それを手動で含めると表示されます。 –

関連する問題