2009-05-13 31 views
1

以前に生成された.objファイルのリンクを実行しようとしています(MSVCの最新バージョンを使用しています)。これらの.objのが作成されたとき#pragma comment(lib、...)を無視しますか?

、ソースコードは、指定された次のような

#pragma comment(lib, ...) 

を、リンカはソースで指定された静的ライブラリをリンクしようとしています。リンカにこれらのライブラリを無視するよう指示する方法はありますか?私は自分自身を指定できますか?

例えば、元の作品は以下のなかった場合:

#pragma comment(lib, foo.lib) 

リンク時に、私は「foo.lib」を無視するようリンカが好きで、その代わりに「bar.lib」に対するリンクと思います。

答えて

1

ソース(#pragmaディレクティブ)を変更してみませんか?

libに

場所オブジェクト・ファイル内のライブラリの検索履歴:comment MSDNページから

。このコメント・タイプには、リンカーが検索するライブラリーの名前(場合によってはパス)を含むcommentstringパラメーターを付ける必要があります。ライブラリ名は、オブジェクトファイル内のデフォルトのライブラリ検索レコードに従います。ライブラリが/ nodefaultlibで指定されていない場合、リンカーはコマンドラインで名前を付けたのと同じように、このライブラリを検索します。複数のライブラリ検索レコードを同じソースファイルに置くことができます。各レコードは、ソースファイル内で遭遇したのと同じ順序でオブジェクトファイルに表示されます。

既定のライブラリと追加されたライブラリの順序が重要な場合は、/ Zlスイッチを使用してコンパイルすると、既定のライブラリ名がオブジェクトモジュールに配置されなくなります。 2番目のコメントプラグマを使用して、追加されたライブラリの後にデフォルトライブラリの名前を挿入できます。これらのプラグマでリストされたライブラリは、ソースコード内にある同じ順序でオブジェクトモジュールに表示されます。

また、リンクされているからfoo.libを停止するNODEFALTLIBリンカオプションを使用すると、あなたは(すなわち、リンカ[プロパティ]ペインを経由して)他のlibファイルと同じようにbar.libを指定することができます。

それ以外の場合は、bar.libからfoo.lib(すてきな解決策)に名前を変更します。

関連する問題