gpt4 book ai didi

c++ - gtest 和 MinGW 联动

转载 作者:行者123 更新时间:2023-11-28 05:54:04 26 4
gpt4 key购买 nike

我做了一个简单的 main 来检查 gtest 是否正确链接并出现“ undefined reference ”错误。 main 函数中的第一行抛出对 `testing::InitGoogleTest(int*, char**)' 的 undefined reference 。

#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-s-d -lsfml-window-s-d -lsfml-network-s-d -lsfml-audio-s-d -lsfml-system-s-d -lglew -lgtest -lgmock -lws2_32 -lopenal32 -lsndfile -lgdi32 -lwinmm -lfreetype -ljpeg -lglu32 -lopengl32 obj\Debug gtest\MainTest.o: In function main':
D:/.../Templates/SFML 2_2 BasicScene/MainTest.cpp:5: undefined reference to
testing::InitGoogleTest(int*, char**)' obj\Debug gtest\MainTest.o: In function Z13RUN_ALL_TESTSv':
D:/.../googletest/googletest/include/gtest/gtest.h:2237: undefined reference to
testing::UnitTest::GetInstance()' D:/.../googletest/googletest/include/gtest/gtest.h:2237: undefined reference to `testing::UnitTest::Run()'

最佳答案

我终于找到了!这很棘手:因为我使用的是 Windows 7 并安装了多个编译器(3 个版本的 MinGW 和 2 个 TDM),我的 PATH 搞混了。当我使用 cmake-gui 3.3 时,我使用的是默认编译器,当我安装 Code::Blocks 时,它是 MinGW 4.7。安装上面提到的所有编译器后,默认编译器路径更改为更高版本的 MinGW。链接一个用较新版本的 MinGW 编译的库不会导致找不到该库,而是会导致链接错误。

总而言之,我使用的是同一个编译器的两个不同版本。

关于c++ - gtest 和 MinGW 联动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34603163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com