我用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

解决方案 »

  1.   

    int ModulBasicCheck(WORD ModuleNo,ULONG DogPassword,BYTE DogCascade)
    改为
    int _stdcall ModulBasicCheck(WORD ModuleNo,ULONG DogPassword,BYTE DogCascade)
    注意在函数体一开始就调用宏:
    AFX_MANAGE_STATE(...)
      

  2.   

    这样声明:
    __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试一下
      

  3.   

    错了,应该这样:
    Private Declare Function ModulBasicCheck Lib "dllapi.dll" _
    (byval mid As Integer, byval pwd As Long, byval csa As Byte) As long
      

  4.   

    用_stdcall 在VC中调用就出错了Private Declare Function ModulBasicCheck Lib "dllapi.dll" _
    (byval mid As Integer, byval pwd As Long, byval csa As Byte) As long
    也还是不行
    用__declspec(dllexport)和在def文件中指定不一样?
      

  5.   

    用_stdcall 在VC中调用声明时,要用CALLBACK前缀