请教一个VB调用动态连接库的问题,急
模板中申明:
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还真不太熟
如果分不够,我可以把我剩下的分全加上,谢谢
问题点数:0、回复次数:8Top
1 楼rainstormmaster(暴风雨 v2.0)回复于 2003-12-01 12:40:40 得分 0
//Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As Variant
呵呵,vb好象不认识这样的声明吧,试试改为下面的声明:
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As anyTop
2 楼Rick110AAA(海牛猪猪 And HerosⅢ之比蒙)回复于 2003-12-01 13:12:51 得分 0
比蒙说:可以试试 rainstormmaster 的 ^_^.Top
3 楼widewave(冯雨(历史事实))回复于 2003-12-01 14:34:40 得分 0
Declare Function GetArray Lib "C:\WINNT\system32\aaa.dll" () As any
这个语法不对吧。Top
4 楼ahbbnimor(我想改行说相声)回复于 2003-12-01 18:25:30 得分 0
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
Top
5 楼hupeng213(小鹏)回复于 2003-12-01 18:56:50 得分 0
改成这样:
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 SubTop
6 楼mingtian2008(明天)回复于 2003-12-01 19:42:09 得分 0
upTop
7 楼widewave(冯雨(历史事实))回复于 2003-12-02 09:39:01 得分 0
upTop
8 楼chenhailiangbiy(我要学)回复于 2003-12-02 10:21:22 得分 0
对于用VC++编写的DLL,在VB中调用的话,可以先注册DLL,然后在VB的Project菜单下引用你编写的DLL,然后定义类的对象再调用DLL中的函数就可以了!!!
试试吧!!!Top




