我用VB加载一个DLL,在“工程==〉引用”引用这个DLL的时候,显示该DLL不能加载could not be loaded
如果直接运行Private Declare Function RDBPointQuery Lib "C:\WINDOWS\system32\MACSVIDBCom.dll" (ByVal pQueryFlag As PointQueryFlag, ByRef lPNum As Long, ByRef PNameArr() As String_struct, ByVal lDomainNo As Long) As Long
则会报编译出错:'user-defined type not defined',请问是什么原因?
如果直接运行Private Declare Function RDBPointQuery Lib "C:\WINDOWS\system32\MACSVIDBCom.dll" (ByVal pQueryFlag As PointQueryFlag, ByRef lPNum As Long, ByRef PNameArr() As String_struct, ByVal lDomainNo As Long) As Long
则会报编译出错:'user-defined type not defined',请问是什么原因?
dll不能引用,这很正常,表示该DLL有可能是标准的,不通通过引用调用,只能通过Declare声明调用。
编译出错的原因有可能是类型PointQueryFlag、String_struct没有定义。还有你那些ByVal,ByRef要斟酌一下。
Public Type PointQueryFlag
a As Integer
b As Integer
rcv_dg_outstanding As Integer
rcv_any_outstanding As Integer
End Type
--------------------------------------
Private Sub Command1_Click()
Dim pQueryFlag As pointqueryflag
Dim lPNum As Long
Dim PNameArr(10) As String_struct
Dim PointNam(10) As String_struct
pQueryFlag.BSDes = ""
pQueryFlag.BSPTypeName = ""
pQueryFlag.lQueryFlag = 0
pQueryFlag.lStationNo = 0
Dim ret As Long '
ret = RDBObj.RDBPointQuery(pQueryFlag, lPNum, PNameArr, 0)
If ret = 0 Then
For i = 0 To lPNum
PointName(i).BSString = PNameArr(i).BSString
Next i
End If
End Sub
--------------------------------------------
他在ret = RDBObj.RDBPointQuery(pQueryFlag, lPNum, PNameArr, 0)这一行报错
defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions .
我的类型声明是PUBLIC类型的,放在Modules里。是说modules也不是公共模块吗?
public type...改为private type试试
http://topic.csdn.net/u/20100530/18/47a2a0db-6f65-43e9-8930-b63bd16dd82a.html?seed=339997108&r=65833432#r_65833432