【问题标题】:Google Test pre-build VS 2013谷歌测试预构建VS 2013
【发布时间】:2015-02-24 11:11:08
【问题描述】:

我有一个使用编译器 VS2008 编译的解决方案。它工作得很好。它使用 Google Test 进行检测,并且 Google Test 库链接到该解决方案。据我所知,gtest.lib 应该使用与解决方案本身相同的编译器进行编译。

现在,我必须用 VS2013 编译同样的解决方案。我得到这个编译错误

Error   3   error LNK2038: mismatch detected for '_MSC_VER': 
value '1700' doesn't match value '1800'  

我认为我应该获得使用 Visual Studio 2013 编译的 Google Test 库。

我找不到这样的东西。 能否给我一个关于我应该使用的 Google 测试库的提示?

【问题讨论】:

  • GoogleTest 很容易自己编译。直接抓取源码,要么使用CMake生成VS解决方案,要么使用msvc子目录下的自定义解决方案。
  • 谢谢。我正在寻找一个预建的

标签: c++ visual-studio linker-errors googletest


【解决方案1】:

您得到的链接器错误非常明显:您需要使用 VS2013 编译的 gtest.lib

“我认为我应该获得使用 Visual Studio 2013 编译的 Google Test 库。”

没错,所以就这样做

你能给我一个关于我应该去的谷歌测试库的提示吗?

好吧,不再引用google test primer documentation(重点是我的),抱歉(我怀疑您是否可以在其他地方可靠地下载适当的二进制文件):

设置新的测试项目

要使用 Google Test 编写测试程序,您需要将 Google Test 编译成一个库并将您的测试与它链接起来。我们为一些流行的构建系统提供构建文件:msvc/ 用于 Visual Studio、xcode/ 用于 Mac Xcode、make/ 用于 GNU make、codegear/ 用于 Borland C++ Builder 和 autotools 脚本(已弃用)和用于 CMake 的 CMakeLists.txt(推荐)位于 Google 测试根目录中。如果您的构建系统不在此列表中,您可以查看 make/Makefile 以了解如何编译 Google Test(基本上您希望在头搜索中使用 GTEST_ROOT 和 GTEST_ROOT/include 编译 src/gtest-all.cc路径,其中 GTEST_ROOT 是 Google Test 根目录)。

一旦您能够编译 Google 测试库,您应该为您的测试程序创建一个项目或构建目标。确保头文件搜索路径中有 GTEST_ROOT/include,以便编译器在编译测试时可以找到“gtest/gtest.h”。将您的测试项目设置为与 Google 测试库链接(例如,在 Visual Studio 中,这是通过添加对 gtest.vcproj 的依赖项来完成的)。

如果您仍有疑问,请查看 Google Test 自己的测试是如何构建的并将其用作示例。

我个人更喜欢使用src/gtest-all.cc 来构建测试运行器,以便从源代码构建并与我的测试项目链接。这是最简单和最便携的方式恕我直言(使用例如您的自定义 GNU makefile)。

正如对您的 OP 的评论中所说,您只需使用您的 VS2013 编译器即可轻松地进行 “prebuild”,以便与其他项目的链接。

【讨论】:

    【解决方案2】:

    请注意,native GTEST package on NuGet 包含一个 gtest.lib。具有使 gtest include 文件夹自动可用的额外好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 2016-01-02
      • 1970-01-01
      • 2014-03-12
      • 2012-03-30
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多