2011-08-12 2 views
0

非常に長い時間が未解決の外部と過ごした後、VS2010が間違った.libファイルをリンクしていたことがわかりました。* .libsをリンクするときにリンカーがあいまいさを解決する方法

ファイル名は同じ名前で残念ながら名前が付けられました。

フォルダリンク(不要)LIBがリンクされていないと、プロジェクトのプロパティ フォルダに設定されたと(欲しかった)LIBが

理想のlibには、新しい日付だった他のプロパティ・シートから継承された、望ましくない、非常に古いでした。

リンカは不要なものを選択しました(上記)。

libsをリンクするルールは何ですか? リンカは少なくともあいまいさで警告を出すべきではありませんか?

編集: シンボルはNEW libにのみ定義されます。そして、新しいlibはOLD lib(リンク設定が変更されていない)を削除したときにのみ検索されます。

答えて

0

コンパイラのヘッダーとしてLIBsをリンカと考えてください。 LIBは、静的LIBでない限り、エクスポートされたシンボルの署名のみを持ちます。 LIBファイルにはバージョンが添付されていません。

2つのヘッダーファイルが持つことができる2つのLIBファイルは、同じ名前を持つことができます。正しいLIB /ヘッダファイルを使用する必要があるのはプログラマです。リンカがすべてのシンボルを見つけられなかったり、シンボルが正しくない場合は、エラーを報告します(ヘッダファイルのシンボルが一貫していない場合と同様です)。

関連する問題