VB调用DLL导出函数出现"Bad DLL call convention"的解决

 VB调用DLL导出函数出现"Bad DLL call convention"的问题原因之一.

最近帮同事调一个VC调用VB的程序,出现了这个错误. 查了一下,发现问题如下:

DLL中的函数没有使用stdcall调用方式。
    VB的错误信息指的是第二条原因。你定义的调用方式为__declspec,而VB要求必须是stdcall方式,这对没有参数的函数影响不大,但对有参数的函数有影响。

用VB6调用VC6下编译的DLL中的导出函数,调试运行时会报告"Bad DLL call convention",而编译成EXE以后直接运行则没有问题。
上网查阅文章后发现,解释方式下的VB调用C语言写的函数,仅限于PASCAL调用约定的函数,也就是stdcall方式,而C方式的函数(cdecl)是不行的,编译运行时无此限制。
解决方法,打开DLL文件源代码,在导出函数的声明和实现前面都加上关键字__stdcall,例如:
// in head file:
int __stdcall myFunction();
?
// in cpp file:
int __stdcall myFunction () { ... }
重新编译DLL并再次运行VB程序,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值