使用Google测试时链接错误

时间:2013-06-29 12:46:18

标签: linker-errors googletest

当我尝试链接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)

1 个答案:

答案 0 :(得分:0)

您需要确保已构建gtest以使用与您的exe相同的C运行时库(CRT)。有关完整信息,请参阅MSDN documentation

目前gtest提供了两个.sln文件; gtest-1.6.0\msvc\gtest.slngtest-1.6.0\msvc\gtest-md.sln。第一个使用编译器标志/MT/MTd分别用于发布和调试版本(CRT的静态版本),而第二个使用/MD/MDd(DLL)版本的CRT)。

您需要使用与这些标志的设置相对应的.sln。