C++ Can';不要忽视VisualStudio2010中的库
我正在将一个项目从VS2008更新到VS2010,出现以下错误: uafxcwd.lib(afxwinappex.obj):错误LNK2005:“public:virtual struct CRuntimeClass*\uu此调用CWinAppEx::GetRuntimeClass(void)const“ (?GetRuntimeClass@CWinAppEx@@UBEPAUCRuntimeClass@@XZ)已定义 在WinAppEx.obj中 我已经尝试了我能想到的一切。uafxcwd.lib位于链接器中的“其他依赖项”和“忽略特定默认库”设置中。出于某种原因,它似乎没有忽略uafxcwd.lib库C++ Can';不要忽视VisualStudio2010中的库,c++,windows,visual-studio-2010,visual-studio-2008,visual-c++,C++,Windows,Visual Studio 2010,Visual Studio 2008,Visual C++,我正在将一个项目从VS2008更新到VS2010,出现以下错误: uafxcwd.lib(afxwinappex.obj):错误LNK2005:“public:virtual struct CRuntimeClass*\uu此调用CWinAppEx::GetRuntimeClass(void)const“ (?GetRuntimeClass@CWinAppEx@@UBEPAUCRuntimeClass@@XZ)已定义 在WinAppEx.obj中 我已经尝试了我能想到的一切。uafxcwd.li
任何帮助都将不胜感激。我很久以前就遇到过这个问题,我找到了一个设置正确、编译无误的项目。我也做了一些笔记,但我不记得我是如何(从哪里)得到答案的 这是: 您正在MFC项目中使用C运行时库,库的链接顺序错误。 CRT和MFC库包含new、delete和DLLMain,其中CRT使用弱外部链接。 MFC库中的所有函数必须在CRT之前链接 为此,请执行以下操作: 在项目设置中,链接、输入,转到忽略库并添加Libcmtd.lib。这将从链接进程中排除Libcmtd.lib 既然你需要它,就必须包括在内。您可以通过在“附加依赖项”框中添加库来强制它。但请按以下顺序添加库:uafxcw.lib LIBCMT.lib
正如您所看到的,uafxcw.lib在LIBCMT.lib之前。这将解决您的问题。解决了它。问题在于VS2010中的uafxcwd.lib引入了一个新类cwinappex。这与我创建的类同名,导致了冲突
谁会这么想?听起来很明显,但你有没有尝试过清洗你的解决方案并重新构建它?是的。这通常能解决这些奇怪的问题,但这次不行。你试过了吗,检查链接顺序:是的,我的顺序是唯一不会导致数百个错误的。另外,WinAppEx.obj不是来自库,因此我不能订购带有它的uafxcwd.lib。如果您将这个.lib放在“附加依赖项”中,那么它就不会被忽略。您正在使用不兼容的设置编译源代码,请将它们全部设置为相同的。我尝试了此方法,但无效。冲突不在这两个库之间,而是在uafxcwd.lib和生成的obj文件之间。