VSプロジェクトをデバッグとしてビルドすると、常にtbb_debug.lib(tbb_debug.dllとリンク)に自動リンクされます。これをオーバーライドして、デバッグビルドでもtbb.libをリンクさせる方法はありますか?
2 に答える
まず、それが「自動リンク」されていることを確認しますか?
その場合、これはを使用して行われ#pragma comment( lib, tbb_debug.lib )
ます。このコードがどこにあるかを見つけ、それがあなたのものである場合はそれを変更するか、または何らかの方法でそれを無効にします(そのコードがあるファイルを含めないか、このピースコードを無効にする何かを#definingすることによって;正気のライブラリライターはそのようなメカニズムを提供する必要がありますまた、明確に文書化する必要があります)。
そのようなプラグマがない場合は、プロジェクト設定に表示されるため、ライブラリがリンクされます。[プロジェクト]->[プロパティ]->[リンカー]->[入力して調整]を右クリックします。
Alexeyのコメントのおかげで編集してください。このヘッダーファイルに見られるように、おそらくTBBの自動リンクを無効にできるようです。定義__TBB_NO_IMPLICIT_LINKAGE
することでうまくいくはずです。
との自動リンクが次の方法tbb_debug.lib
で実行される場合:
#pragma comment( lib, "tbb_debug" )
次に、MSDNドキュメントページでpragma comment
説明されているように:
ライブラリ検索レコードをオブジェクトファイルに配置します。...ライブラリ名は、オブジェクトファイルのデフォルトのライブラリ検索レコードに従います。ライブラリが/nodefaultlibで指定されていない場合、リンカはコマンドラインで名前を付けた場合と同じようにこのライブラリを検索します。
#pragma comment( lib, "tbb_debug" )
リンカーオプションを渡すことで、経由で自動リンクを無効にすることができます/NODEFAULTLIB:tbb_debug.lib
。
ただし、「複数定義されたシンボル」エラー(LNK1169)またはおそらくLNK4098を受け取っているので、質問していますか?その場合はtbb.lib
、デバッグプロファイルとリリースプロファイルの両方のリンカへの入力としてリストされている可能性があります。正しいライブラリが自動的にリンクされているため、デバッグプロファイルのこのエントリを削除する必要があります。