似乎无法忽略Visual Studio 2010中的库

时间:2012-06-26 18:59:17

标签: c++ windows visual-studio-2010 visual-studio-2008 visual-c++

我正在将一个项目从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库。

非常感谢任何帮助。

2 个答案:

答案 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。这与我所做的课程完全相同,引起了冲突。

谁有蠢事?