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 自体の設定に何か問題があると思うのですが、調べるべきところを教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/03 21:31:11
  • 終了:--

回答(1件)

id:toriaezu No.1

toriaezu回答回数119ベストアンサー獲得回数72005/02/04 00:06:43

ポイント40pt

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

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

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

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

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

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

id:takomasa

ありがとうございます。

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

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

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

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

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

2005/02/04 00:25:24
  • id:takomasa
    VisualStudio.NET 2003 のバグ?

    もう半年も前の質問ですが、自力で解決しましたので「いわし」に書いておきます。
    この現象が起きるか起きないかの分かれ目は、「ライブラリ名を展開した絶対パスにハイフン”-”が入っているか、いないか?」でした。
    ハイフンが入っていると、私が書いたような現象が起きます。
    同じソースコードを同僚と共有しているのですが、私のユーザ名にはハイフンが入っており、同僚のユーザ名にはありません。
    それゆえに、ユーザ名を含むディレクトリの下にソースツリーを置くと、ユーザによって問題が起きたり起きなかったり、という奇怪な現象が起きていたのでした。
    バグか仕様か分かりませんが、原因が分かったあとで検索してみても、この現象に関する記述は見つかりませんでした。
    いやぁ、まいった。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません