我有一个庞大而复杂的项目,终于要进行单元测试了。我已经使用 Visual Studio 2010 在本地构建了 googleTest 1.6.0,项目文件是使用 README 指定的 cmake 构建的。
该项目有许多静态和动态链接的依赖库。其中许多是专有的。所有链接尝试都会产生 220 个此类错误。这是一个样本:
msvcprtd.lib(MSVCP100D.dll) : 错误 LNK2005: "public: void __cdecl std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QEAAXXZ) 已经在 gtest.lib(gtest-all.对象)
libcpmtd.lib(cerr.obj) : error LNK2005: "protected: char * __cdecl std::basic_streambuf >::_Gndec(void)" (?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std @@IEAAPEADXZ) 已在 msvcprtd.lib(MSVCP100D.dll) 中定义
LIBCMTD.lib(setlocal.obj):错误 LNK2005:_configthreadlocale 已在 MSVCRTD.lib(MSVCR100D.dll) 中定义
链接:警告 LNK4098:defaultlib 'MSVCRTD' 与使用其他库冲突;使用 /NODEFAULTLIB:library LINK : 警告 LNK4098: defaultlib 'LIBCMTD' 与使用其他库冲突;使用 /NODEFAULTLIB:library
致命错误 LNK1169:找到一个或多个多重定义的符号
我已经尝试了 /NODEFAULTLIB 标志,并且按照建议尝试仅忽略 msvcprtd.lib、MSVCRTD.lib 和 LIBCMTD.lib,但后来我遇到了未解析的符号...
项目和 googleTest 都使用 x64、/MP、/MDd 编译,没有 /clr。
我一直在玩编译器标志,想知道是否存在某种版本不匹配。Dumpbin,就我的理解而言,并没有暗示我可能理解的任何事情。我希望有一个呃