注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hhfighting的博客

以责人之心责己,以恕己之心恕人

 
 
 

日志

 
 
 
 

chkesp.c line 42错误  

2010-10-26 20:54:52|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
运行程序,出现如下错误对话框:
Debug Error:
Program: ... 
Module:
file: i386\chkesp.c
Line: 42
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.
(Press Retry to Debug the Application)
网络上搜索,出现此错误的原因如下:(和调用约定相关)
1、dll调用时,调用了dll中不存在的一个方法。出现此种情况,一般是在使用dll时没有把版本搞清楚。
2、由于调用的接口与原接口参数不一致导致的,比如参数不符合或少参数输入导致。这种错误方式比较常见
3、在dll中导出函数必须通过def文件来设定(__declspec(dllexport)这样的方式是为用.LIB连接准备的),且要声明为WINAPI,如:
void WINAPI AutoChess(char board[][15], char color, int &x, int &y);
4、Dll导出函数声明导出方法,与主模块中声明的导入方法不一致。使得调用时参数的传递中,破坏了调用堆栈,出现错误。  
解决方法:请确定导出方(Dll等)与导入方(Exe等)的声明保持一致。
5、Dll导出函数本身破坏了调用堆栈。编码中最一般的错误比如:对象(如CString)等。
解决方法:保证产生的对象都被安全的释放。
  评论这张
 
阅读(1451)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018