当在Visual Studio 2012中创建一个最简单的MFC应用程序,并将其设置为静态链接到MFC时,链接失败。
这里是一个7张截图的画廊,从向导创建项目开始,一直到构建(导致链接器错误)。 在此期间没有进行源代码编辑。 错误日志显示:
这里是一个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 ==========
这只是我一个人的问题吗?你有没有解决方法的建议?
uafxcwd.lib
用于静态-unicode-debug。第二个库要么根本不存在,要么链接器顺序错误。如果您关闭Unicode支持并在清除PCH文件后重新构建所有内容,我很想知道会发生什么。 - WhozCraigafxnmcdd.lib
,只添加回uafxcwd.lib
。也许还要添加/NODEFAULTLIBS
。 - Warren P/force:multiple
确实可以使项目构建和运行,但我不太熟悉MFC,无法确定这是否是正确的解决方法或者只是掩盖了问题。 - Michael Burr