我做了一个简单的main来检查gtest是否正确链接并得到“未定义的引用”错误。主函数的第一行抛出对‘to::InitGoogleTest(int*,char**)’的未定义引用。
#include <gtest/gtest.h>
int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}在cmake的帮助下,我成功地构建了gtest Code::Block项目,并且没有使用p线程库。然后,我用MinGW编译了所有东西。我取了libgtest.libgmock.a并将它们链接到代码::块项目中,没有任何问题。我还指定了包含目录和二进制目录。我是否也需要包括gtest_main.a呢?
构建日志(我添加了“.”若要隐藏长链文件夹):
"obj\Debug gtest\MainTest.o“-lsfml-图形-s lsfml-window s lsfml-network-s lsfml-system-s-d-d -lsfml-system-s-d -lgtest -lgmock -lws2_32 -lopenal32 -lsndfile -lgdi32 -lwinmm -lfreetype -ljpeg -lopengl32 obj\Debug gtest\MainTest.o:在函数测试中::InitGoogleTest(int*)char**)‘obj\Debug gtest\MainTest.o:在函数
Z13RUN_ALL_TESTSv': D:/.../googletest/googletest/include/gtest/gtest.h:2237: undefined reference totesting::UnitTest::GetInstance()’D:/.../googletest/googletest/include/gtest/gtest.h:2237:中,对‘gtest::UnitTest::Run()’的未定义引用
发布于 2016-01-06 22:10:29
我终于找到了!这很棘手:由于我使用的是Windows 7并安装了多个编译器(3个版本的MinGW和2个TDM),我的路径被搞混了。当我使用cmak-gui3.3时,我使用的是默认编译器,在安装代码::块时是MinGW 4.7。在安装了上面提到的所有编译器之后,默认的编译器路径更改为更高版本的MinGW。与使用较新版本的MinGW编译的库的链接不会导致找不到库,而是会导致链接错误。
总之,我使用的是同一编译器的两个不同版本。
https://stackoverflow.com/questions/34603163
复制相似问题