调用的是PTKAlarmSDK.dll
#ifdef PTKALARMLIB_EXPORTS  
   #define PTKALARMLIB_API extern "C" __declspec(dllexport)
#else  
   #define PTKALARMLIB_API extern "C" __declspec(dllimport)
#endif 
声明回调函数
typedef struct

  void ( *PTK_UserCommandSuccessful )( const void *sender,uint receid,uchar hostid,uchar terid,uchar commandcode);    
  void ( *PTK_UserCommandDelete )( const void *sender,uint receid,uchar hostid,uchar terid,uchar commandcode);       
  void ( *PTK_Alarm_Information )( const void *sender,uint receid,uchar hostid,uchar terid,uchar areaid);  
  void ( *PTK_Alarm_KpdDisplay )( const void *sender,uint receid,uchar hostid,uchar *Dis1,uchar *Dis2); 
}SPTK_callbackFun; 
定义一个dll接口函数
PTKALARMLIB_API void *Init_PTKAlarmlib(const void *sender,SPTK_callbackFun *CallBack); 
最后怎么调用这个接口函数 

解决方案 »

  1.   

    哈哈,老实说,不好意思,我目前delphi都还是半吊子.我看不懂,我来接点分,以便我后续提问,呵呵!
      

  2.   

    delphi调用dll函数的方式:
    function Sub_Add(const id: integer): Integer; stdcall; external 'login.dll';
    声明一个函数,参数类型跟dll中的相同,后面加  stdcall  再加 external ,后面接dll文件名,可以指定位置 如“c:\login.dll”
      

  3.   

    别误导人家,如果楼主所说的DLL真是C方式而声明又像楼所贴出来的所示的话
    #ifdef PTKALARMLIB_EXPORTS  
       #define PTKALARMLIB_API extern "C" __declspec(dllexport)
    #else  
       #define PTKALARMLIB_API extern "C" __declspec(dllimport)
    #endif 
    C的默认调用约定是__cdecl,你上面的DLL导出说明没看到有stdcall,或者是有def,而且你的结构
    typedef struct

      void ( *PTK_UserCommandSuccessful )( const void *sender,uint receid,uchar hostid,uchar terid,uchar commandcode);    
      void ( *PTK_UserCommandDelete )( const void *sender,uint receid,uchar hostid,uchar terid,uchar commandcode);       
      void ( *PTK_Alarm_Information )( const void *sender,uint receid,uchar hostid,uchar terid,uchar areaid);  
      void ( *PTK_Alarm_KpdDisplay )( const void *sender,uint receid,uchar hostid,uchar *Dis1,uchar *Dis2); 
    }SPTK_callbackFun; 
    四个函数指针也应该有相应调用约定的指示,这个你得详细问问DLL的作者。