2016-12-21 71 views
2

我在Windows10上开始使用Gtest和Gmock时遇到问题。我通常在Linux上工作,但想切换到Windows并遇到问题。在Windows上使用Gtest和Gmock

我设法根据文档(使用Cmake和Visual Studio)构建Gmock和Gtest。我在适当的目录中有gmock.lib和gtest.lib文件。但是当我想将它们链接到我的测试程序时,我可以看到许多类型为“未定义参考”的错误。

我使用的命令是:

g++ "-LC:\\Users\\jacek\\cpp\\googletest\\googlemock\\Debug" "-LC:\\Users\\jacek\\cpp\\googletest\\googlemock\\gtest\\Debug" -o HelloWorld "src\\counter.o" "src\\counter_test.o" -lgmock -lgtest 

的错误,例如:

C:\Users\jacek\workspace\HelloWorld\Debug/../src/counter_test.cpp:14: undefined reference to testing::Message::Message()' C:\Users\jacek\workspace\HelloWorld\Debug/../src/counter_test.cpp:14: undefined reference to testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)' 

我想在此寻找和发现,也许我应该构建共享库。我用适当的选项重建了gmock和gtest,现在我也有dll文件,但我仍然收到相同的错误。

我在这里做错了什么?

这可能是一个问题,Linux上的库的命名与windows不同吗? (libgmock.a vs gmock.lib)由于这个原因,我是否应该将命令中的某些内容更改为g ++?

我粘贴的路径很好,文件在那里(否则错误会不同)。

我在这里错过了什么?

+0

好的,我解决了这个问题。事实证明,我无法用Visual Studio编译库,然后在G ++中使用它。我不得不切换到另一种方法,并且此视频非常有用:https://www.youtube.com/watch?v=y9sGAF1k63o&list=PL0SUKxlBaq1COi52nuq2lPf6AbMRrn2LI&index=7 – YotKay

回答

1

好的,我解决了这个问题。事实证明,我无法用Visual Studio编译库,然后在G ++中使用它。我不得不切换到不同的方法,这个视频是非常有用的:https://www.youtube.com/watch?v=y9sGAF1k63o&list=PL0SUKxlBaq1COi52nuq2lPf6AbMRrn2LI&index=7

该视频教会如何使用gtest与Eclipse,但不使用库,但融合cpp和h文件从gtest脚本。它工作正常。我遇到的唯一问题是我安装了python 3.5版本,并且它在某些情况下与'fuse'脚本中使用的python 2.7不兼容,但是我设法快速纠正了这些少数情况并使其工作。

1

除了你的正确答案: 如果你想使用外部库(如gmock或gtest),你必须编译库和你的程序使用相同的编译器。这就是为什么你的程序抛出未定义参考的错误。在Visual Studio中有MSVC编译器。如果你想使用VS,那么只需使用VS编译你的程序。 这还不是全部,你必须使用相同的编译器和相同的设置(例如在调试模式下编译)

我只是想添加到您的答案。因为你写道:

原来,我不能编译库与Visual Studio

那是错的,你可以编译VS库,但你cant't把它们连接到你的程序。也许这已经很清楚了,那么请原谅我的回答。