You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019使用GoogleTest 1.7.0编译出现LNK2038错误如何解决?

问题根因

你遇到的LNK2038报错本质是链接的GTest预编译库与本地项目使用的MSVC工具链版本不匹配:

  • _MSC_VER是MSVC编译器的版本标识:1800对应Visual Studio 2013,1900对应Visual Studio 2015。你使用的GTest 1.7.0属于非常早期的版本,Nuget平台上对应的预编译包默认使用VS2013编译生成,与你VS2019环境使用的工具链版本不一致,触发了链接阶段的版本校验错误,后续的未解析外部符号报错也是版本不匹配导致的符号生成规则不一致引发的。
解决方案

方案1:升级GTest版本(最推荐)

GTest从1.8.0版本开始已正式适配更高版本的MSVC工具链,VS2019环境建议直接使用1.10及以上版本的GTest:

  • 卸载当前Nuget安装的1.7.0版本GTest包,搜索并安装适配v142工具集(VS2019默认工具集)的官方GTest预编译包即可。

方案2:手动编译对应版本GTest库

如果业务要求必须使用GTest 1.7.0版本,需要使用本地VS2019工具链手动编译GTest源码生成对应库文件,替换Nuget下载的预编译库:

  1. 下载GTest 1.7.0源码,使用CMake配置生成VS2019对应的解决方案
  2. 打开生成的解决方案,选择与你项目完全一致的运行库选项(debug/release对应/MDd/MD或/MTd/MT)编译生成lib文件
  3. 在项目属性中手动配置GTest头文件目录、库目录,链接生成的gtest.lib、gtest_main.lib即可。

方案3:下调项目工具链版本(不推荐)

如果不想改动GTest版本,可将项目的MSVC工具集降低到VS2013版本,与GTest 1.7.0预编译包的编译版本对齐:

  • 右键项目→属性→常规→平台工具集,选择「Visual Studio 2013 (v120)」,重新编译即可。注意此方案需要提前在VS Installer中安装VS2013对应的生成工具。

额外注意:编译时必须保证GTest库和项目使用的运行库选项完全一致,否则也会触发同类链接错误。

内容的提问来源于stack exchange,提问作者Eduard Rostomyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:15:04