1

プロジェクトを VS2008 から VS2010 に更新していますが、次のエラーが発生します。

uafxcwd.lib(afxwinappex.obj): エラー LNK2005: "public: virtual struct CRuntimeClass * __thiscall CWinAppEx::GetRuntimeClass(void)const " (?GetRuntimeClass@CWinAppEx@@UBEPAUCRuntimeClass@@XZ) は既に WinAppEx.obj で定義されています

考えられることはすべて試しました。uafxcwd.lib は、リンカーの [追加の依存関係] および [特定の既定のライブラリを無視] 設定にあります。何らかの理由で、uafxcwd.lib ライブラリを無視していないようです。

どんな助けでも大歓迎です。

4

2 に答える 2

1

私はずっと前にこの問題を抱えていましたが、適切な設定があり、エラーなしでコンパイルされるプロジェクトを見つけました。私もいくつかメモを取りましたが、どのように (どこで) 解決策を見つけたか覚えていません。

ここにあります:

MFC プロジェクトで C ランタイム ライブラリを使用しており、ライブラリが間違った順序でリンクされています。CRT および MFC ライブラリには、CRT が弱い外部リンクを使用している場合に、new、delete、および DLLMain が含まれています。MFC ライブラリ内のすべての関数は、CRT の前にリンクする必要があります。

これを実現するには、次の手順を実行します。

プロジェクト設定で、リンク、入力、無視ライブラリに移動し、Libcmtd.lib を追加します。これにより、Libcmtd.lib がリンク プロセスから除外されます。

あなたがそれを必要とするので、それを含める必要があります。[追加の依存関係] ボックスにライブラリを追加することで強制できます。ただし、次の順序でライブラリを追加します: uafxcw.lib LIBCMT.lib。

ご覧のとおり、uafxcw.lib は LIBCMT.lib のにあります。これで問題が解決するはずです。

于 2012-06-26T23:38:57.263 に答える
1

修正しました。問題は、VS2010 の uafxcwd.lib が新しいクラス cwinappex を導入したことです。これは私が作成したクラスと同じ名前で、競合が発生しました。

誰がそれをサンクしたでしょうか?

于 2012-06-27T18:08:02.810 に答える