the value of esp was not properly saved
2013-05-12 23:22
239 查看
问题说明:
主模块在调用Dll的导出函数时会保存返回地址在堆栈中(ESP+xxx)。函数调用返回时,会弹栈取得返回地址(ESP-xxx),从而返回到主模块。
vaule of ESP was not properly saved across a function call.
上面出现的错误是系统提示主模块调用前堆栈的指针(ESP),与调用导出函数后的指针不符。
一般有两种情况会出现类似错误。
1. Dll导出函数声明导出方法,与主模块中声明的导入方法不一致。使得调用时参数的传递中,破坏了调用堆栈,出现错误。
2. Dll导出函数本身破坏了调用堆栈。编码中最一般的错误比如:对象(如CString)等。
解决方法:
针对第1种情况,请确定导出方(Dll等)与导入方(Exe等)的声明保持一致。
对于第2种情况,请保证产生的对象都被安全的释放。
备注:
可以试试下面的方法可以简单的测试方法
将Dll的导出函数定义成空处理(直接返回),如还出现错误,则是调用错误。
主模块在调用Dll的导出函数时会保存返回地址在堆栈中(ESP+xxx)。函数调用返回时,会弹栈取得返回地址(ESP-xxx),从而返回到主模块。
vaule of ESP was not properly saved across a function call.
上面出现的错误是系统提示主模块调用前堆栈的指针(ESP),与调用导出函数后的指针不符。
一般有两种情况会出现类似错误。
1. Dll导出函数声明导出方法,与主模块中声明的导入方法不一致。使得调用时参数的传递中,破坏了调用堆栈,出现错误。
2. Dll导出函数本身破坏了调用堆栈。编码中最一般的错误比如:对象(如CString)等。
解决方法:
针对第1种情况,请确定导出方(Dll等)与导入方(Exe等)的声明保持一致。
对于第2种情况,请保证产生的对象都被安全的释放。
备注:
可以试试下面的方法可以简单的测试方法
将Dll的导出函数定义成空处理(直接返回),如还出现错误,则是调用错误。
相关文章推荐
- The value of ESP was not properly saved across a function call的问题 2010-9-26 18:57
- MFC开发遇到的异常Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
- The value of ESP was not properly saved across a function call解决方案
- The value of ESP was not properly saved across a function call
- Run-Time Check Failure #0,The value of ESP was not properly saved 错误解决
- DLL 调用错误 -The value of ESP was not properly saved across a function cal
- Run-Time Check Failure #0,The value of ESP was not properly saved 错误解决
- The value of ESP was not properly saved across a function call.
- C++程序在debug模式下遇到Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call问题。
- Run-Time Check Failure #0,The value of ESP was not properly saved 错误解决
- The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.
- 【Debug】The value of ESP was not properly saved across a function call.
- 【Dll】Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
- the value of esp was not properly saved
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解决方法
- 调用DLL函数,出现错误 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function
- the value of esp was not properly saved
- DLL 调用错误 -The value of ESP was not properly saved across a function call.