我将一个VS2005项目转换为VS2010,我对转换到2010年时引入的LNK2005错误感到难过。
3> Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\lib\nafxcwd.lib: 3>nafxcwd.lib(viewcmn.obj) : error LNK2005: "protected: virtual struct AFX_MSGMAP const * __thiscall CListView::GetMessageMap(void)const " (?GetMessageMap@CListView@@MBEPBUAFX_MSGMAP@@XZ) already defined in uafxcwd.lib(viewcmn.obj)
我已经广泛阅读了各种原因并验证了所有库在调试版本和运行时库以及(我相信)在CRT库之前链接的MFC之间是一致的(虽然我没想到这些库在转换为2010。)
我怀疑问题是将Unicode库与非Unicode库链接的项目?输出说'nafxcwd.lib'中的方法已在'uafxcwd.lib'中定义。如果这确实是问题,那么我不确定为什么在转换到2010之后它被引入了什么是安全的解决方案?我有点不愿意忽略其中一个库并希望在运行时获得最佳效果。 Unicode库必须保持Unicode,非Unicode库必须保持非Unicode,以前在2005年就可以了,但在2010年没有。
有什么建议吗?