请教一个VB调用动态连接库的问题,急

gaoruiqiang 2003-12-01 12:30:37
模板中申明:
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As Variant
使用:
Private Sub Command1_Click()
Dim ID As Variant
ProgId = GetArray()
For i = 0 To UBound(ID) - 1
MsgBox (ID(i))
Next
End Sub

函数GetArray返回一个数组。
动态连接库我自己用VC编写的,我在VC里调试时,函数执行没有问题。我把程序生成可执行文件运行也没问题,但是在VB的环境里运行时,每次执行到ProgId = GetArray()就提示Bad DLL calling convention。
请问vb高手这是怎么回事,我对VB还真不太熟
如果分不够,我可以把我剩下的分全加上,谢谢
...全文
53 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhailiangbiy 2003-12-02
  • 打赏
  • 举报
回复
对于用VC++编写的DLL,在VB中调用的话,可以先注册DLL,然后在VB的Project菜单下引用你编写的DLL,然后定义类的对象再调用DLL中的函数就可以了!!!
试试吧!!!
widewave 2003-12-02
  • 打赏
  • 举报
回复
up
rainstormmaster 2003-12-01
  • 打赏
  • 举报
回复
//Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As Variant

呵呵,vb好象不认识这样的声明吧,试试改为下面的声明:
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As any
mingtian2008 2003-12-01
  • 打赏
  • 举报
回复
up
hupeng213 2003-12-01
  • 打赏
  • 举报
回复
改成这样:
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As Variant
使用:
Private Sub Command1_Click()

Dim ID As Variant
ID = GetArray
For i = 0 To UBound(ID)
MsgBox (ID(i))
NextEnd Sub
ahbbnimor 2003-12-01
  • 打赏
  • 举报
回复
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As Variant
语法有误
如果是在模块里声名应该:
Public Function 函数名 Lib 动态链接库名 (参数传递类型 参数名 as 参数类型) as 函数返回值的类型

你的那句应该写成:
Public Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As Any
widewave 2003-12-01
  • 打赏
  • 举报
回复
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As any

这个语法不对吧。
海牛 2003-12-01
  • 打赏
  • 举报
回复
比蒙说:可以试试 rainstormmaster 的 ^_^.

7,789

社区成员

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

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