动态加载DLL后, 调用出错
来源:互联网 发布:mac连接wifi经常断线 编辑:程序博客网 时间:2024/05/22 10:52
动态加载DLL后, 调用出错
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.
排查:
只要该DLL函数有参数都会报错.
一下子联想到: __stdcall和__cdecl的问题.
例如:
原来是这么声明:
typedef int (__stdcall *Fun1)(bool bEnable);
现在改为
typedef int (__cdecl *Fun1)(bool bEnable);
调用了一下, 没报错了.
所以在动态加载DLL是, 要注意该DLL导出的函数的声明类型
通常:
MFC的dll默认的入栈方式为 __stdcall方式的
而 Win32 DLL 默认的入栈方式为 __cedcall方式,不是__stdcall方式。
动态加载DLL后, 可以获得函数地址, 但是一调用就报错.
报如下的错误: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.
排查:
只要该DLL函数有参数都会报错.
一下子联想到: __stdcall和__cdecl的问题.
例如:
原来是这么声明:
typedef int (__stdcall *Fun1)(bool bEnable);
现在改为
typedef int (__cdecl *Fun1)(bool bEnable);
调用了一下, 没报错了.
所以在动态加载DLL是, 要注意该DLL导出的函数的声明类型
通常:
MFC的dll默认的入栈方式为 __stdcall方式的
而 Win32 DLL 默认的入栈方式为 __cedcall方式,不是__stdcall方式。
- 动态加载DLL后, 调用出错
- 加载dll动态库出错的解决方法
- 项目编译后dll文件调用出错
- 动态加载调用DLL里的类
- C语言调用DLL动态链接库出错
- 动态加载类(在程序中调用DLL文件)
- DLL的类库怎样实现动态加载调用
- DLL的类库怎样实现动态加载调用
- 动态加载类(在程序中调用DLL文件)
- DLL的类库怎样实现动态加载调用
- 动态调用DLL时不能加载依赖的程序集
- .NET 中动态加载DLL ,调用完之后及时释放。
- 动态调用DLL时不能加载依赖的程序集
- 加载 DLL 时出错: 'RegExp'
- 加载dll出错的解决方法
- BCB(C++ Builder)创建动态库(DLL,接口导出和调用),动态加载DLL
- C#调用DLL函数出错
- C# 调用 C++ dll出错
- 使用脚本,自动跳过丢失归档的恢复--------MODIFY SEQ
- Java 几种中文编码详解
- ubuntu 11.10安装vmtool遇到的问题及解决方案
- iframe框架的自适应
- C#菜鸟之漫漫长路~~~char,string,StringBuilder
- 动态加载DLL后, 调用出错
- 虚函数
- 说一下《捉虫日记》
- Patch android wifi to enable IBSS/WEP support
- MTU 检测和设置
- web漏洞详解及修复建议--阿里云
- CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
- 【转】学习openstack云第一天
- rearrange array (red, white, blue)