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