我在 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/