vc动态库的说明:
DLLEXPORT int WINAPI Application_Manager(
HANDLE hHandle,
USHORT Length_of_Cmd,
LPSTR Cmd,
LPSTR Res,
LPSTR ret);

vb调用定义说明:
Public Declare Function Application_Manager Lib "Tww_HD.dll" (ByVal dev As Long, ByVal lencmd As Integer, ByRef cmd As string, ByRef res As String, ByRef ret As String) As Integer程序调用后发出的数始终不是所要的:
例:cmd="BFFC"
我想要调用动态库后,库向外发出来的数仍是“BFFC”
而库中将字符串变成了ASC码“42 48 48 43”发出,我不知道该如何办,多谢!!!

解决方案 »

  1.   

    声明改为:
    Public Declare Function Application_Manager _
    Lib "Tww_HD.dll" (_
        ByVal dev As Long, _
        ByVal lencmd As Integer, _
        ByVal cmd As string, _
        ByVal res As String, _
        ByVal ret As String) As Integer
    VB中的字符串要以ByVal的方式传到API中.
      

  2.   

    最好使用
    Public Declare Function Application_Manager _
    Lib "Tww_HD.dll" (_
        ByVal dev As Long, _
        ByVal lencmd As Integer, _
        ByVal cmd As string, _
        ByVal res As String, _
        ByVal ret As String) As Long
      

  3.   

    因为没试验,仅供参考:
    Public Declare Function Application_Manager _
    Lib "Tww_HD.dll" (_
        ByVal dev As Long, _
        ByVal lencmd As Integer, _
        ByVal cmd As Long, _
        ByVal res As Long, _
        ByVal ret As Long) As Long
    传递字符串用StrPtr()手动取得地址。注意VB是Unicode。