Public Declare Function SMGPDeliver Lib "SmgpDLL.dll" (nTimeout As Integer, ByVal pDeliverResp As DeliverResp) As Long其中DeliverResp 的定义为:
Public Type DeliverResp
    SmsgID As String
    NmsgFormat As Integer
    SsrcTermID As String
    NisReport As Integer
    NmsgLen As Integer
    sMsgContent As String
    sDestTermID As String
    sRecvTime As String
End Type
调用为:
Dim lvr As DeliverResp
ret2 = SMGPDeliver(2000, lvr)——》这里有错!(“用户定义类型不能用”)这是为啥呀:?

解决方案 »

  1.   

    结构体是按地址传的。
    应该是
    Public Declare Function SMGPDeliver Lib "SmgpDLL.dll" (nTimeout As Integer, byerf pDeliverResp As DeliverResp) As Long
      

  2.   

    再问一个char SmsgID[11]这种C++
    表示方法在VB中如何表示??
      

  3.   

    Public Declare Function SMGPDeliver Lib "SmgpDLL.dll" (nTimeout As Integer, pDeliverResp As DeliverResp) As Long
    第二个参数不要用ByVal怎么有两贴呀,之前我已在你的另一帖上回了啊
      

  4.   

    debuger(): 再问一个char SmsgID[11]这种C++
    表示方法在VB中如何表示??答曰: Dim SmsgID() As Byte
      

  5.   

    更正:
    Dim SmsgID(11) As Byte