我将一个 VS2005 项目转换为 VS2010,我是否对转换为 2010 时引入的 LNK2005 错误感到困惑。
3> 搜索 C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\lib\nafxcwd.lib: 3>nafxcwd.lib(viewcmn.obj):错误 LNK2005:“受保护:虚拟结构 AFX_MSGMAP const * __thiscall CListView::GetMessageMap(void)const”(?GetMessageMap@CListView@@MBEPBUAFX_MSGMAP@@XZ) 已在 uafxcwd.lib(viewcmn.obj) 中定义
我已经广泛阅读了各种原因,并验证了所有库在调试\发布和运行时库以及(我相信)CRT 库之前的 MFC 链接方面都是一致的(尽管我没想到这些在转换到 2010 后会改变。)
我怀疑问题是将 Unicode 库与非 Unicode 库链接的项目?输出显示“nafxcwd.lib”中的方法已在“uafxcwd.lib”中定义。如果这真的是问题,那么我不确定为什么在转换到 2010 后引入它,安全的解决方案是什么?我有点不愿意忽略其中一个库,并希望在运行时获得最好的结果。Unicode 库必须保持 Unicode,非 Unicode 库必须保持非 Unicode,2005 年还可以,2010 年不行。
有什么建议么?