我用AppWizard(dll)做的dll,然后加入:
int ModulBasicCheck(WORD ModuleNo,ULONG DogPassword,BYTE DogCascade)
{
....
}
.def中
ModulBasicCheck @1
编译成功后,在vc中调用没有问题,但在vb中不行
vb中的代码:
Private Declare Function ModulBasicCheck Lib "dllapi.dll" _
(mid As Integer, pwd As Long, csa As String) As Boolean
Private Sub Form_Load()
Dim m1 As Integer
Dim p1 As Long
Dim s1 As String
m1 = 1
p1 = 0
s1 = "0"
MsgBox ModulBasicCheck(m1, p1, s1)
End Sub
int ModulBasicCheck(WORD ModuleNo,ULONG DogPassword,BYTE DogCascade)
{
....
}
.def中
ModulBasicCheck @1
编译成功后,在vc中调用没有问题,但在vb中不行
vb中的代码:
Private Declare Function ModulBasicCheck Lib "dllapi.dll" _
(mid As Integer, pwd As Long, csa As String) As Boolean
Private Sub Form_Load()
Dim m1 As Integer
Dim p1 As Long
Dim s1 As String
m1 = 1
p1 = 0
s1 = "0"
MsgBox ModulBasicCheck(m1, p1, s1)
End Sub
改为
int _stdcall ModulBasicCheck(WORD ModuleNo,ULONG DogPassword,BYTE DogCascade)
注意在函数体一开始就调用宏:
AFX_MANAGE_STATE(...)
__declspec(dllexport) int _stdcall ModulBasicCheck(....)VB中这样调用:
Private Declare Function ModulBasicCheck Lib "dllapi.dll" _
(byval mid As Integer, byval pwd As Long, byval csa As String) As long试一下
Private Declare Function ModulBasicCheck Lib "dllapi.dll" _
(byval mid As Integer, byval pwd As Long, byval csa As Byte) As long
(byval mid As Integer, byval pwd As Long, byval csa As Byte) As long
也还是不行
用__declspec(dllexport)和在def文件中指定不一样?