我的第一种方法是创建一个额外的静态库,用于编译gtest-all.cc
、gmock-all.cc
和gmock-main.cc
(在测试项目中不使用main
(。谷歌测试项目编译了,但我在测试项目中得到了这个链接错误:
Error LNK2001 unresolved external symbol "public: void __cdecl testing::internal::Mutex::AssertHeld(void)" (?AssertHeld@Mutex@internal@testing@@QEAAXXZ)
对于x64,哪些预处理器或项目设置可以避免此链接错误?
我没有找到一种方法来调整我的谷歌测试项目设置以避免这个错误。
由于谷歌测试有复杂的宏来满足所有支持的平台,这些知识应该是谷歌测试本身的内部知识。因此,解决方案不是为静态库创建自己的项目。
我找到了两个解决方案:
-
可以将
gtest-all.cc
和gmock-all.cc
放入测试项目中。 -
在
googletest/readme.md
中,我们发现可以生成VS2015解决方案。以下命令生成项目gmock_main
,该项目创建不具有上述链接错误的.lib
。cmake -DCMAKE_GENERATOR_PLATFORM=x64 -Dgtest_build_samples=ON <path to>googletestgooglemock