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。

既然你需要它,它就必须包括在内。您可以通过在 Additional Dependencies 框中添加库来强制它。但按以下顺序添加库:uafxcw.lib LIBCMT.lib。

如你所见,uafxcw.libLIBCMT.lib 之前。这应该可以解决您的问题。

于 2012-06-26T23:38:57.263 回答
1

修复。问题是 VS2010 中的 uafxcwd.lib 引入了一个新的类 cwinappex。这与我创建的类同名,导致冲突。

谁会想到呢?

于 2012-06-27T18:08:02.810 回答