VB,VC的小问题,望各位高手赐教。

AK47QUAKE 2000-07-05 02:26:00
我用VC编的DLL在VB中声名时,参数类型总是不匹配,
VC:INT FUNCA(INT A);

VB:Public Declare Function FuncB Lib "TEST.DLL" Alias "FuncA" (A As Integer) as Integer

在VB中CALL: FuncB(0)
时总是报告 “Bad dll calling convertion"
不知怎么回事,望各位高手赐教。
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AK47QUAKE 2000-07-06
  • 打赏
  • 举报
回复
Janven
万分万分万分感谢Janven大虾的提示让我按时完成了我的作品
过几日您将在MP3相关中看到我的新做。

现在就给你50分吧!

实在是太感谢了!!!!!!
Janven 2000-07-05
  • 打赏
  • 举报
回复
VC中生成动态库时要使用__stdcall 调用约定, 而不能使用缺省的__cdecl调用约定;__stdcall约定通常用于32位API函数的调用。
Un1 2000-07-05
  • 打赏
  • 举报
回复
VB:Public Declare Function FuncB Lib "TEST.DLL" Alias "FuncA" (byval A As Integer) as Integer
Tyro 2000-07-05
  • 打赏
  • 举报
回复
C中的int在16位和32位系统中分别对应vb中的integer和long,试试:
Public Declare Function FuncB Lib "TEST.DLL" Alias "FuncA" (A As Long) as Long
poorbear 2000-07-05
  • 打赏
  • 举报
回复
也许有以下2个问题:
1是你的dll是否在程序目录下(或系统目录下)
2是把int都换成long,试试
AK47QUAKE 2000-07-05
  • 打赏
  • 举报
回复
我不管把Integet换成Long,Single,Double还是Variant,或是加上Byval,
都不能通过,"Bad dll calling convertion"依旧存在,顺便说一下,
在VC中无参数的函数,如 INT FuncC(VOID);
在VB中声明为Declare Function FuncC Lib "TEST.DLL" () As Integer
可正常调用,返回值也可被VB接收。
我在VC中创建DLL时都是用__stdcall调用约定。
可有参数的函数就是不能传递参数,真急死我了。
谁能解决我的问题,万分感谢,小生这相有礼了。:-)
我的编程环境:Windows98, Visual Studio 98(6.0)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧