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
相关产品推荐
相关产品推荐

