6

次の形式のリンカー エラーが発生し続けます。

libcmtd.dll msvmrtd.dllいくつかの要素 (例: _mkdir )は既に定義されています...

そして、それらを解決する方法がわかりません。

完全なエラー メッセージは次のとおりです。

プライベート: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) はすでに LIBCMTD.lib(typinfo.obj) で定義されています

MSVCRTD.lib(ti_inst.obj): エラー LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は LIBCMTD.lib で既に定義されています(typinfo.obj)

この問題の解決を手伝ってもらえますか?

4

4 に答える 4

1

LNK4098に関する MSDN の記事には、非常に便利な表があります。使用している CRT に応じて、「特定のライブラリを無視する」リストに手動で追加するライブラリが示されています。CRT (マルチスレッドかどうか、静的か DLL、デバッグかリリースか) を選択し、選択に基づいて無視ライブラリを追加する必要があります。

根本的な原因については、KB154753 で詳しく説明されています ... Visual C++ を使用してビルドされたときにプログラムがリンクするライブラリ

これについての私の解釈は、特定の状況では、コードをリンクする CRT ライブラリを自動的に選択するアルゴリズムが、いくつかの競合するライブラリを選択するということです。

于 2010-02-09T00:50:15.297 に答える