GTest报错“SEH exception with code 0xc0000005 thrown in the test body”

因为代码成熟度要求,写了一个简单的GTest,  但是就几行代码,还出现了解决不了的错误。

报错如标题所示,SEH exception with code 0xc0000005 thrown in the test body。查阅相关资料,发现是空指针的错误。但是看代码一点问题都看不出来。

后来看了下架构图,发现那个端口没连,但是代码里写了,用其他方式“连上”了那个端口。所以导致GTest一直报错。

然后看到可以用这个

::testing::Test::HasFailure()

可以查询错误出处。

一直错的就不要怀疑自己的GTest代码了!!!!

参考链接:

error: SEH exception with code 0xc0000005 thrown in the test

How to check if the test failed in Google Test TearDown()?

### 解决Visual Studio中使用GTest时`test.obj`文件的编译错误 当遇到类似于 `msvcprtd.lib(MSVCP100D.dll)` 和 `gtestd.lib(gtest-all.obj)` 的重复定义错误时,这通常是因为多个静态库或动态链接库都包含了相同的 C++ 运行时函数实现。这种冲突可以通过调整项目的配置来解决。 #### 配置多线程调试库 确保整个项目及其依赖项使用的运行库设置一致非常重要。如果某些第三方库是以静态方式构建的,则应将应用程序也设为使用静态版本的C/C++运行库[^2]: - 打开 **项目属性** - 导航到 **C/C++ -> 代码生成 (Code Generation)** - 将 **Runtime Library** 设置更改为 **Multi-threaded Debug (/MTd)** 此更改可以防止由于不同模块间RTTI(Run-Time Type Information)不匹配而导致的符号重定义问题。 #### 修改Google Test库的编译选项 对于Google Test本身,在其官方文档中有提到如何针对特定环境定制化安装[^3]。考虑到当前环境中存在DLL形式的标准模板库(STL),建议重新编译Google Test以适应本地开发条件: - 使用相同类型的运行库(/MT 或 /MD) 来编译 Google Test 库; - 如果决定继续采用 DLL 版本的 STL ,则需保证所有参与链接的目标均遵循这一原则;反之亦然。 #### 清理并重建解决方案 有时旧的对象文件可能会引起不必要的麻烦。因此,在做出上述修改之后,执行一次完整的清理操作后再尝试重新构建整个解决方案是一个不错的选择。 ```batch devenv SolutionName.sln /clean Release devenv SolutionName.sln /rebuild "Release|x64" ``` 通过以上措施应该能够有效缓解乃至彻底消除此类编译期错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值