0

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

1 回答 1

0

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

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

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

于 2013-06-29T14:58:34.147 回答