DLL中的函数原型为:int  STDCALL ReadBaseInfos( char * Name, char * Gender, char * Folk,char *BirthDay, char * Code, char * Address,char *Agency, char * expire )
返回1表示成功。VB中声明如下;Declare Function ReadBaseInfos Lib "Sdtapi.dll" (ByVal iname As String, ByVal isex As String, ByVal folk As String, ByVal birthday As String, ByVal code As String, ByVal addr As String, ByVal agency As String, ByVal expire As String) As Integer
ByRef也试过,不行.在Scripts中调用如下:
    Dim iname As String * 31
    Dim isex  As String * 4
    Dim folk As String * 10
    Dim code As String * 19
    Dim addr As String * 71
    Dim birthday As String * 10
    Dim expire As String * 24
    Dim agency As String * 31
ret = ReadBaseInfos(iname, isex, folk, birthday, code, addr, agency, expire)
返回值为0。PS:该DLL函数是正确的,在C++BUILDER和DELPHI都可以,但在PB和VB上均不成功。还有一个问题:DLL中数据类型和VB中的对应关系?请各位指教一下,在什么地方出了问题啊?

解决方案 »

  1.   

    Declare Function ReadBaseInfos Lib "Sdtapi.dll" (ByVal iname As String, ByVal isex As String, ByVal folk As String, ByVal birthday As String, ByVal code As String, ByVal addr As String, ByVal agency As String, ByVal expire As String) As LongorDeclare Function ReadBaseInfos Lib "Sdtapi.dll" (ByRef iname As Byte, ByRef isex As Byte, ......) As Long    Dim iname(30) As Byte
        Dim isex(3)  As Byte
        ......
        ret = ReadBaseInfos(iname(0), isex(0), folk(0), birthday(0), code(0), ......)