c++ - 在 Windows 上使用 Gtest 和 Gmock

标签 c++ googletest googlemock

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

我成功地根据文档(使用 Cmake 和 Visual Studio)构建了 Gmock 和 Gtest。我在适当的目录中有 gmock.lib 和 gtest.lib 文件。但是当我想将它们链接到我的测试程序时,我可以看到数十个“ undefined reference ”类型的错误。

我使用的命令是:

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++ 吗?

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

我在这里缺少什么?

最佳答案

除了你的正确答案之外: 如果您想使用外部库(例如 gmock 或 gtest),则必须使用相同的编译器来编译库和程序。这就是为什么你的程序会抛出 undefined reference 的错误。 Visual Studio中有MSVC编译器。如果你想使用 VS,那么只需使用 VS 来编译你的程序即可。 这还不是全部,您必须使用相同的编译器和相同的设置(例如在 Debug模式下编译)

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

It turned out that I cannot compile libraries with Visual Studio

这是错误的,您可以使用 VS 编译库,但无法将它们链接到您的程序。也许这已经很清楚了,那么请原谅我的回答。

关于c++ - 在 Windows 上使用 Gtest 和 Gmock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272942/

相关文章:

c++ - Google 测试框架不打印 std::optional

c++ - 为 DLL 库配置 Google 测试项目

c++ - g++ 4.1.2 编译错误

c++ - 模板 :Name resolution:Dependent types: -->can any one tell some more examples for this statement?

c# - 如何添加对由 C# 项目调用的非托管 C++ 项目的引用?

c++ - 在谷歌模拟中返回对 unique_ptr 的引用

c++ - 来自 gmock 的 DefaultValue 的范围问题

c++ - LNK2019 与 Qt 和 Gmock

c++ - gmock gtest 如何设置模拟

c++ - 如何轻松查看 C/C++ #include 图?