6

Visual Studio 2012で最も単純な種類の新しいMFCアプリケーションを作成し、静的にMFCにリンクするように設定すると、リンクは失敗します。

これは、ウィザードによるプロジェクトの作成から構築まで の7つのスクリーンショットギャラリーです(リンカーエラーが発生します)。その間にソース編集は行われませんでした。

エラーログの状態:

1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>  stdafx.cpp
1>  TestDlg.cpp
1>  Test.cpp
1>  Generating Code...
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "void __cdecl AfxRegisterMFCCtrlClasses(void)" (?AfxRegisterMFCCtrlClasses@@YAXXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)" (?PreUnsubclassControl@CMFCControlContainer@@IAEXPAVCWnd@@@Z) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "public: int __thiscall CMFCControlContainer::SubclassDlgControls(void)" (?SubclassDlgControls@CMFCControlContainer@@QAEHXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>C:\Users\XXXXXXXX\Documents\Visual Studio 2012\Projects\Test\Debug\Test.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

これは私だけですか?これに対処する方法について提案がありますか?

4

3 に答える 3

2

私は同じ問題に遭遇しました。#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS多くの MFC オーバーヘッドを取り除くことに決めた場合は、ダイアログの基本クラス、メソッド呼び出しなどを からCDialogExに変更することも忘れないでくださいCDialog

CDialogEx背景色やダイアログの画像を変更しないと、とにかく役に立たないことがわかります。

于 2013-12-13T17:47:38.550 に答える
0

テスト後、v100 は正常に動作し、v110 は動作しません。次のリンクとして MS Connect に報告してみてください: http://connect.microsoft.com/VisualStudio/feedback/details/581084/linker-cant-locate-some-external-symbol-when-use-mfc-in-a-静的ライブラリ

于 2013-03-01T09:42:50.290 に答える