1

Win32 プロジェクトを VC6 から VC2010 にアップグレードし、VC6 でのみ動作する多くのコードを修正しました。コンパイルは問題ありませんが、プロジェクトがリンクを開始すると、次のメッセージで失敗しました

リンク: 致命的なエラー LNK1104: ファイル 'mfc42ud.lib' を開けません

MFC42ud が参照されている場所を見つけようとしましたが、見つかりませんでした。

誰でも私を助けることができますか?

更新しました:

MFC42ud.lib をダウンロードしましたが、まだリンク エラーが発生しています。

atlsd.lib(atltypes.obj): エラー LNK2005: "public: __thiscall CRect::CRect(void)" (??0CRect@@QAE@XZ) は mfc42ud.lib(MFC42uD.DLL) で既に定義されています

atlsd.lib(atltypes.obj): エラー LNK2005: "public: int __thiscall CRect::Width(void)const " (?Width@CRect@@QBEHXZ) は mfc42ud.lib(MFC42uD.DLL) で既に定義されています

atlsd.lib(atltypes.obj): エラー LNK2005: "public: int __thiscall CRect::Height(void)const " (?Height@CRect@@QBEHXZ) は既に mfc42ud.lib(MFC42uD.DLL) で定義されています

リンク: 致命的なエラー LNK1104: ファイル 'mfcs42ud.lib' を開けません

MFC42ud.libをコピーしただけでは互換性がないようで、エラーが複数定義になりました

4

3 に答える 3

2

OK、ついに解決しました。リンクが必要なライブラリがいくつかあり、これらのライブラリにはリンク情報がいくつかあるためです。

理由は、Microsoft VC 指定のプリプロセッサ #pragma comment(lib, "some.lib") です。

実際には、特に mfc ライブラリのようなシステム提供のライブラリをリンクするのは、本当に悪い解決策です。プロジェクトをアップグレードしても、古い mfc ライブラリをリンクしようとします。

解決策は、古い mfc ライブラリを無視することです。

于 2013-06-04T06:43:32.583 に答える
1

これは、Visual Studio 6 の MFC DLL の Unicode デバッグ バージョンであり、Visual Studio 6 のインストール時のオプション パーツの一部です。

VS6 インストール CD からインストールします。

参照: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/46a26f16-a407-4628-962b-2a6899391293/

ps ちなみに、これは Google の最初の結果です。

于 2013-06-03T11:10:14.470 に答える
0

私の場合、私のプロジェクトは別のライブラリにリンクしていて、そのライブラリはで構築されていました

#pragma comment(lib, "mfc42.lib") 

その中。

そのライブラリをプロジェクトにリンクすると、そのような設定がなかったmfc42.libにもかかわらず、プロジェクトにリンクするように指示されました

問題のあるライブラリを追跡して削除することは容易ではありませんでした。

于 2013-11-01T22:33:58.790 に答える