Run-Time Check Failure #0 错误

在使用Visual Studio开发过程中,遇到ESP值未正确保存于函数调用间的问题。通过检查并统一接口类在不同头文件中的定义,解决了函数调用约定不一致引发的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用VS,遇到过一个错误,如下图:

文字描述是这样的:

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

费了些功夫解决了。

错误提示说可能是函数调用约定不一致破坏了ESP的值,有可能像下面这样解决:

修改VS编译器的默认调用约定,让它和你的函数声明的约定一样。都是__cdecl或都是__stdcall

然而我的情况不是这个,是另外的原因:

定义的一个带虚函数的接口类,放在两个地方的两个不同的头文件里,DLL引用的头文件是 {path-a}/intf.h,exe引用的是{path-b}/intf.h。在更改接口,添加新的虚函数时,只改了{path-b}/intf.h,所以,exe和dll两边的接口就错位了!改一致即可。

图方便,拷贝粘贴是魔鬼啊。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

foruok

你可以选择打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值