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

Visual Studio 2017中Google Test使用构建问题求助

嘿,我在VS2017里折腾Google Test的时候也踩过不少坑,结合你的场景,给你列几个最容易出问题的地方和对应的解决办法,一步步排查应该能搞定:

常见排查与解决步骤

1. 项目依赖与引用要配置到位

  • 首先确保测试项目Matrix-Test已经正确关联主项目Matrix:
    右键Matrix-Test项目 → 「项目依赖」 → 勾选Matrix;
    再右键Matrix-Test → 「属性」 → 「通用属性」→「框架和引用」→「添加引用」→ 选中Matrix项目。
  • 如果Matrix是静态库(.lib),要保证测试项目能正确链接到它;如果是动态库,得把dll路径和头文件路径都配置好。

2. 头文件包含路径别出错

  • 测试代码里引用Table类的头文件时,要么用相对路径(比如#include "../Matrix/Table.h"),要么在Matrix-Test的属性里添加头文件目录:
    右键Matrix-Test → 「属性」→「C/C++」→「常规」→「附加包含目录」,把Matrix项目的头文件所在文件夹加进去。
  • 别忘了给Table的头文件加上包含保护(比如#pragma once或者#ifndef TABLE_H #define TABLE_H ... #endif),避免重复包含导致编译报错。

3. 确保Google Test和VS2017兼容

  • VS2017对Google Test的版本有要求,建议用v1.8.x系列的版本,后续新版本可能不再支持旧版VS。
  • 如果是通过NuGet安装的Google Test,要选对应VS2017(v141工具集)的包,比如Microsoft.googletest.v141.windesktop.msvcstl.static.rt-dyn这类;如果是手动编译的GTest,要保证编译时用的工具集、平台(x86/x64)和运行时库和主项目完全一致。

4. 平台与工具集必须统一

  • 两个项目的平台工具集要一样:右键项目→「属性」→「常规」→「平台工具集」,都选Visual Studio 2017 (v141)。
  • 平台架构(x86/x64)也得统一,不能一个是32位一个是64位,不然会出现架构不匹配的链接错误。
  • 运行时库设置也要同步:「C/C++」→「代码生成」→「运行时库」,Debug模式下都选多线程调试(/MTd),Release模式下都选多线程(/MT)(或者对应的MD/MDd,只要两个项目一致就行)。

5. 检查测试用例代码的写法

  • 确认测试代码里Table对象的声明没问题:比如如果Table在Matrix命名空间下,得写Matrix::Table myTable;,不能直接写Table myTable;。
  • 测试宏的语法别写错,比如TEST(TestCaseName, TestName)的括号、大括号要配对,里面的断言(比如EXPECT_EQ、ASSERT_TRUE)用法要正确。

6. 看构建日志找具体错误

如果上面的步骤都没解决问题,一定要去看输出窗口的详细构建日志:
菜单栏→「生成」→「输出」→ 选择「生成」,找到具体的错误码(比如LNK2019链接错误、C1083头文件找不到错误),根据错误码针对性解决。比如LNK2019一般是链接时找不到类的实现,大概率是依赖或库路径没配好;C1083就是头文件路径不对。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:22