VC结口和调用例子:// 错误获取
int WINAPI iGetErrMsg(const int iErrRetCode, char *pErrMsg,int *pSW);VC中的调用:
int iRet=0,iSw=0;
Uchar buf[16]={0};
Uchar s[300]={0};
iRet=iGetErrMsg(0x801, (char *)s, &iSw);VB中,我的声明和调用:
声明:
Public Declare Function iGetErrMsg Lib "DQ_NEU.DLL" (ByVal iErrorCode As Long, ByRef szErrorDescription As Byte, ByRef szSW As Byte) As Long调用:
  Dim szErrorDescription(0 To 299) As Byte
  Dim szSW(0 To 1) As Byte
  Dim lRet As Long
  lRet = iGetErrMsg(514, szErrorDescription(0), szSW(0))  //这里就发生异常了 每次在VB中调用iGetErrMsg就发生异常了,在VC中调用是正常的,请大家帮帮忙.  DLL 是用VC做的,谢谢先!

解决方案 »

  1.   

    Public Declare Function iGetErrMsg Lib "DQ_NEU.DLL" (ByVal iErrorCode As Long, byref szErrorDescription As long , Byref szSW As long) As Long
      Dim szErrorDescription(0 To 299) As Byte
      Dim szSW(0 To 1) As Byte
      Dim lRet As Long
      lRet = iGetErrMsg(514, szErrorDescription(0), szSW(0))  //这里就发生异常了
      

  2.   

    To zlt982001(乐天) :
    谢谢先!
     不过,编译通不过, long 和byte类型不匹配
    另:你的CSDN名和我QQ名是一样的:)
      

  3.   

    Public Declare Function iGetErrMsg Lib "DQ_NEU.DLL" (ByVal iErrorCode As Long, byVal szErrorDescription As long , ByVal szSW As long) As Long
      Dim szErrorDescription(0 To 299) As Byte
      Dim szSW(0 To 1) As Byte
      Dim lRet As Long
      lRet = iGetErrMsg(514, varptr(szErrorDescription(0)), varptr(szSW(0)))  //这里就发生异常了
      

  4.   

    见鬼,还是不行,这里有个细节,就是VC调用时用的是16进制,而我在VB调用时直接用10制,有影响么?
      

  5.   

    =iGetErrMsg(0x801, (char *)s, &iSw)
    你是指这个 801 吗?
    在VB中一样传
     iGetErrMsg(&H801, varptr(szErrorDescription(0)), varptr(szSW(0)))
      

  6.   

    谢谢 zlt982001(乐天) ,解决了。
    不关声明的事,是动态库用错了版本: (
    分全结你了
    再次谢谢!