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

VS2013 Pro构建Google Test 1.8.1遇编译错误求助

解决Visual Studio 2013 Pro构建Google Test 1.8.1的C2220与C4616错误

核心问题分析

  • C2220:项目开启了「警告视为错误」,gmock-matchers.h中的代码触发VS2013的警告后被升级为错误。
  • C4616:gmock-matchers.h中使用了VS2013不支持的警告编号5046,编译器判定为无效警告。

解决方案1:通过CMake配置修正

  1. 打开CMake GUI,加载Google Test源码目录和构建目录。
  2. 添加或修改以下CMake变量:
    • 找到CMAKE_CXX_FLAGS,追加参数 /WX-,关闭全局「警告视为错误」设置。
    • 设置gtest_force_shared_crt为ON,避免CRT链接不一致引发的额外警告。
  3. 点击「Configure」→「Generate」重新生成VS解决方案,再尝试构建。

解决方案2:修改gmock-matchers.h源码

  1. 找到Google Test源码路径下的gmock/include/gmock/gmock-matchers.h文件。
  2. 定位到包含#pragma warning(disable: 5046)的代码行,将其注释或删除。
  3. 保存文件后,回到Visual Studio重新构建项目。

解决方案3:直接调整VS项目属性

  1. 在VS解决方案中,右键选中报错的gtest/gmock项目,选择「属性」。
  2. 进入「配置属性」→「C/C++」→「常规」,将「警告视为错误」改为「否」。
  3. 进入「配置属性」→「C/C++」→「高级」,在「禁用特定警告」中输入4616,直接屏蔽无效警告的报错。
  4. 应用设置后重新构建。

额外建议

  • CMake 3.26.3对VS2013的兼容性有限,若出现其他异常,可尝试降级CMake至3.10.x版本(该版本对旧版VS支持更稳定)。
  • 确保VS2013已安装Update 5补丁,它修复了大量C++11相关的编译器问题,能减少构建冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:13