现有C/C++ dll
DECLARE_HANDLE(HDEV);// 回调函数类型定义
typedef void (CALLBACK *PCONECT_PROC)( PVOID param );typedef void (CALLBACK *PDISCONECT_PROC)( PVOID param );typedef void (CALLBACK *PACCEPT_PROC)( PVOID param,  HDEV hDevAccept );typedef void (CALLBACK *PRECV_PROC)( PVOID param,  const char *buf, int len );typedef void (CALLBACK *PERROR_PROC)( PVOID param, int nError );// 设置回调函数
DEVDLL_API(void) Dev_SetCallBack
(
  PCONECT_PROC OnConnect DEV_DEFAULT( NULL ), 
  PDISCONECT_PROC OnDisconnect DEV_DEFAULT( NULL ),
  PACCEPT_PROC OnAccept DEV_DEFAULT( NULL ),
  PRECV_PROC OnRecv DEV_DEFAULT( NULL ),
  PERROR_PROC OnError DEV_DEFAULT( NULL ) 
);

解决方案 »

  1.   

    Option ExplicitDeclare Sub Dev_SetCallBack Lib "x.dll" _
       (ByVal OnConnect As Long, _
        ByVal OnDisconnect As Long, _
        ByVal OnAccept As Long, _
        ByVal OnRecv As Long, _
        ByVal OnError As Long)Sub Main()
        Dev_SetCallBack _
            AddressOf OnConnectProc, _
            AddressOf OnDisconnectProc, _
            AddressOf OnAcceptProc, _
            AddressOf OnRecvProc, _
            AddressOf OnErrorProc
    End SubSub OnConnectProc(ByVal param As Long)
    End SubSub OnDisconnectProc(ByVal param As Long)
    End SubSub OnAcceptProc(ByVal param As Long, ByVal hDevAccept As Long)
    End SubSub OnRecvProc(ByVal param As Long, ByVal lpBuf As Long, ByVal length As Long)
    End SubSub OnErrorProc(ByVal param As Long, ByVal nError As Long)
    End Sub