【发布时间】:2016-04-08 18:35:39
【问题描述】:
我做了一个简单的 main 来检查 gtest 是否正确链接并得到“未定义的引用”错误。主函数的第一行抛出一个未定义的对 `testing::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 项目,并且没有 pthread 库。然后,我用 MinGW 编译了所有内容。我拿了 libgtest.a libgmock.a 并将它们链接到我的 Code::Block 项目中,没有任何问题。我还指定了包含目录和二进制目录。我是否也可能需要包含 gtest_main.a?
构建日志(我添加了“...”来隐藏长长的文件夹链):
"obj\Debug gtest\MainTest.o" -lsfml-graphics-sd -lsfml-window-sd -lsfml-network-sd -lsfml-audio-sd -lsfml-system-sd -lglew -lgtest -lgmock - lws2_32 -lopenal32 -lsndfile -lgdi32 -lwinmm -lfreetype -ljpeg -lglu32 -lopengl32 obj\Debug gtest\MainTest.o:在函数
main': D:/.../Templates/SFML 2_2 BasicScene/MainTest.cpp:5: undefined reference totesting::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: 未定义对 `testing::UnitTest::Run()' 的引用
【问题讨论】:
-
要解释链接失败,您必须提供执行失败链接的编译器命令行以及错误消息。在问题中发布此信息。
标签: c++ mingw codeblocks googletest linkage