人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VisualStudio.net Professional 2003 の質問です。
C++ のプロジェクトのプロパティを開き、構成プロパティ->ライブラリアン->全般において
「出力ファイル」 Output.lib
「追加の依存ファイル」 libAAA.lib
「追加のライブラリディレクトリ」 ../lib/libAAA/debug
と設定すると、ライブラリアン->コマンドラインが
/Out:”Output.lib” /LIBPATH:”../lib/libAAA/debug” libAAA.lib 絶対パス¥libAAA.lib
となり、同じ libAAA.lib が2回リンクされるようになってしまいます。
同じソースコード、プロジェクト・ファイル、ソリューションを同僚の VisualStudio で開くと、2つめの余計な「絶対パス¥libAAA.lib」は付きません。
VisualStudio 自体の設定に何か問題があると思うのですが、調べるべきところを教えてください。

●質問者: takomasa
●カテゴリ:コンピュータ
✍キーワード:.NET C++ LIB Out VisualStudio
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● toriaezu
●40ポイント

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

ご指定のページが見つかりません

推測で書きます。間違っていたらごめんなさい。

ファイルを相対パスによる参照(相対参照)の場合と絶対パスによる参照(絶対参照)の場合に分かれることが.NETではよくあります。

この場合、相対パスのlibAAA.libと絶対パスのlibAAA.libがあるので、可能性としてはlibAAA.libが複数存在することが考えられます。あるいは、リンカオプションかその他のプロパティのどこかで絶対参照してしまっている可能性も考えられます。

あと、ヘルプと同僚のマシンの環境を見比べながら、頑張って解決してください!お力になれたら嬉しいです。

◎質問者からの返答

ありがとうございます。

実際には「追加の依存ファイル」には、libAAA.lib libBBB.lib と複数のファイルが並ぶのですが、このうち1つ libAAA.lib を試しに消してみると、コマンドラインから「libAAA.lib」も「”絶対パス¥libAAA.lib”」も消えるのです。

つまりどこかで絶対パス表記の設定を人間が明示的に書いているわけではなく、VisualStudio が2重にしているように見えます。

また「同僚の環境では大丈夫」というのは、「ソースコード管理システムから取り出した同じプロジェクトを同僚の環境でビルドした場合」で、試しに私の環境でビルドしかけた状態のファイル群をすべて同僚のマシンにコピーし、そこでプロパティを見てみると、やはり2重指定になっていました。

ということは、どこかのファイルに書き込まれているようです。

今は自宅なので確認できませんが、環境変数 LIB はチェックしておいた方が良さそうですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ