我正在将一个项目从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库。
非常感谢任何帮助。
答案 0 :(得分:1)
我很久以前遇到过这个问题,我发现一个项目设置正确,编译没有错误。我也做了一些笔记,但我不记得我是如何(在哪里)得到解决方案。
这是:
您在MFC项目中使用C运行时库,并且库以错误的顺序链接。 CRT和MFC库包含新的,删除和DLLMain,其中CRT使用弱外部链接。 必须在CRT之前链接MFC库中的所有功能。
为了实现这一目标,请执行以下操作:
在项目设置中,链接,输入,转到忽略库并添加Libcmtd.lib。这将从链接进程中排除Libcmtd.lib。
既然你需要它,就必须包含它。您可以通过在Additional Dependencies框中添加库来强制它。但是按以下顺序添加库:uafxcw.lib LIBCMT.lib。
正如你所见,uafxcw.lib BEFORE LIBCMT.lib。这应该可以解决你的问题。
答案 1 :(得分:1)
修正了它。问题是VS2010中的uafxcwd.lib引入了一个新类cwinappex。这与我所做的课程完全相同,引起了冲突。
谁有蠢事?