我已经安装了谷歌测试,因为它被描述为here。但是当我尝试对当前项目使用测试时,我收到2个LNK4098警告:
defaultlib'MSVCRTD'与使用其他lib冲突;使用/ NODEFAULTLIB:库
和'LIBCMTD'相同,以及一堆LNK2005错误。但是,当我实际上忽略这两个默认库时,它没有帮助:我得到更多的错误。有什么问题?
答案 0 :(得分:7)
您必须确保googletest,并且您的项目是使用相同版本的C运行时库(CRT)构建的。 Google测试(目前为v1.6.0)提供了2个Visual Studio解决方案文件; gtest-1.6.0\msvc\gtest.sln
使用静态版本,gtest-1.6.0\msvc\gtest-md.sln
使用动态(dll)版本。默认情况下,通过Visual Studio创建的项目使用dll版本。
您需要决定是否希望项目使用CRT的静态版本或动态版本。
要将项目设置为使用静态版本,请转到Project->Properties
,然后在窗口左上角选择配置:Debug
。然后在同一窗口中选择Configuration Properties
- > C/C++
- > Code Generation
。 Runtime Library
的选项应为Multi-threaded Debug (/MTd)
。
然后,您需要确保链接到相应版本的gtest,因此请选择Configuration Properties
- > Linker
- > Input
。通过提供gtest库的Debug版本的完整路径(例如Additional Dependencies
)来编辑C:\gtest-1.6.0\msvc\gtest\Debug\gtestd.lib
字段。
对于Release Configuration再次执行相同操作,但将Runtime Library
选项设置为Multi-threaded (/MT)
并提供gtest库的Release版本的完整路径(例如C:\gtest-1.6.0\msvc\gtest\Release\gtest.lib
)。
如果您决定使用CRT的dll版本,请选择Multi-threaded Debug DLL (/MDd)
和Multi-threaded DLL (/MD)
,然后链接到位于gtest-1.6.0\msvc\gtest-md\...
而不是gtest-1.6.0\msvc\gtest\...
的gtest-md库{1}}。