首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Run-Time Check Failure #零

2012-10-29 
Run-Time Check Failure #0关于Run-Time Check Failure #0? The value of ESP was not properly saved acr

Run-Time Check Failure #0

关于Run-Time Check Failure #0? The value of ESP was not properly saved across a function call的问题!

?

?

??? HINSTANCE hInst;
??? //加载动态链接库
??? hInst=LoadLibrary("chj800u.dll");

??? /*
??? 功能:打开usb评价器虚拟串口,并与设备建立连接
??? 返回值:成功:返回相应的串口句柄 >0
??????? 失败:返回 -1
??? */
??? typedef long (_stdcall *PJQ_Open)();
??? /*
??? 功能:与设备断开连接,并关闭usb评价器虚拟串口
??? 返回值:成功:? 0
??? ??? ??? 失败:? -1
??? */
??? typedef long (__stdcall *PJQ_Close)();

?

??? //初始化评价器
??? PJQ_Open Open=(PJQ_Open)GetProcAddress(hInst,"PJQ_Open");
??? //关闭评价器
??? PJQ_Close Close=(PJQ_Close)GetProcAddress(hInst,"PJQ_Close");

?

??? if(!Open)
??? {
??? ??? MessageBox("获取函数地址失败!");
??? ??? return;
??? }
??? //调用时出错!
??? long hand=Open();
???
??? EvaluateWait(hand,3);
??? Close();

??? FreeLibrary(hInst);

?

?

在调用Open()方法时出错,原因是调用约定的问题:

解决方案:

在定义函数指针的时候加上 _stdcall 表示标准调用约定. 默认是c调用约定.

?? /*
??? 功能:打开usb评价器虚拟串口,并与设备建立连接
??? 返回值:成功:返回相应的串口句柄 >0
??????? 失败:返回 -1
??? */
??? typedef long (_stdcall *PJQ_Open)();

?

?

?

热点排行