Run-Time Check Failure #0 错误

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

Run-Time Check Failure #0 错误_第1张图片

文字描述是这样的:

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两边的接口就错位了!改一致即可。

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

你可能感兴趣的:(函数,虚函数,ESP,Visual,Studio)