gtest和MinGW联动

时间:2016-01-05 02:14:37

标签: c++ mingw codeblocks googletest linkage

我做了一个简单的主要检查gtest是否正确链接并得到了#34;未定义的引用"错误。 main函数的第一行抛出一个未定义的引用`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项目中,没有任何问题。我还指定了include目录和二进制目录。是否有可能我还需要包含gtest_main.a?

构建日志(我添加了#34; ...&#34;隐藏长链文件夹):

  

&#34; obj \ Debug gtest \ MainTest.o&#34; -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 to中测试:: InitGoogleTest(int *,char **)&#39;   obj \ Debug gtest \ MainTest.o:在函数Z13RUN_ALL_TESTSv': D:/.../googletest/googletest/include/gtest/gtest.h:2237: undefined reference to中测试:: UnitTest :: GetInstance()&#39;   D:/.../ googletest / googletest / include / gtest / gtest.h:2237:未定义引用`testing :: UnitTest :: Run()&#39;

1 个答案:

答案 0 :(得分:1)

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

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