当我尝试链接Google测试库时,出现以下错误:
1> msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: virtual __thiscall std::basic_iostream<char,struct std::char_traits<char> >::~basic_iostream<char,struct std::char_traits<char> >(void)" (??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in gtest.lib(gtest.obj)
1> msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: virtual __thiscall std::basic_ios<char,struct std::char_traits<char> >::~basic_ios<char,struct std::char_traits<char> >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in gtest.lib(gtest.obj)
答案 0 :(得分:0)
您需要确保已构建gtest以使用与您的exe相同的C运行时库(CRT)。有关完整信息,请参阅MSDN documentation。
目前gtest提供了两个.sln文件; gtest-1.6.0\msvc\gtest.sln
和gtest-1.6.0\msvc\gtest-md.sln
。第一个使用编译器标志/MT
和/MTd
分别用于发布和调试版本(CRT的静态版本),而第二个使用/MD
和/MDd
(DLL)版本的CRT)。
您需要使用与这些标志的设置相对应的.sln。