5

そのため、外部ライブラリを使用する Visual Studio 2010 プロジェクトがあり、LNK2005 なしでコンパイルするには、リンカー設定でライブラリの順序を調整する必要がありました。

リリース モードでは正常にコンパイルできましたが、何らかの理由で、デバッグ時に LNK エラーなしでコンパイルすることができませんでした。

通常、LNK2005 を無視して、リンカーに最初に遭遇したものをそのまま使用するように指示する方法はありませんか?

ありがとう!

//編集: PARTICULAR 問題のエラー出力の一部を次に示します。ただし、私はすでにさまざまな方法でそれを解決しようとしましたが、各ソリューションではさまざまなリンカーの問題が発生しています。したがって、LNK2005を無視する一般的な解決策を探しています

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

...

Error 37 error LNK1169: one or more multiply defined symbols found

4

2 に答える 2

11

リンカー オプション /FORCE ([プロジェクト プロパティ] の [リンカーの全般] タブにある [強制的にファイルを出力]) を試すことができます。これにより、そのようなエラーが発生した場合でも、リンカーは exe/dll を作成するように強制されます。ただし、このexeがまったく機能するか、正しく機能するかを確認するのはあなた次第です。結局のところ、私はこの戦略をお勧めしません。

リンカ エラーは解決するのが面倒な場合がありますが、通常は、プロジェクトを移行または設定した後にのみ実行する必要があります。これにはかなりの時間がかかる場合があります。1 日以上かかることもありましたが、適切に実行する必要があります。

于 2010-11-03T08:48:56.300 に答える
11

リンカ エラーを絶対に無視してはなりません。リンカーは、複数の場所で定義されているシンボルについて混乱していると言っています。どこから定義を取得する必要がありますか? 本当に恣意的にしたいですか?コードを変更し、リンカがランダムに別の定​​義を使用することを決定した場合、突然コードが壊れる可能性があります。

ツールと戦う代わりに、コードを修正して、エラーなしでコンパイルおよびリンクできるようにします。この MSDN の記事には、修正に関する情報と、詳細情報へのリンクが含まれています。

于 2010-11-03T08:10:21.683 に答える