调用的是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);
最后怎么调用这个接口函数
#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);
最后怎么调用这个接口函数
function Sub_Add(const id: integer): Integer; stdcall; external 'login.dll';
声明一个函数,参数类型跟dll中的相同,后面加 stdcall 再加 external ,后面接dll文件名,可以指定位置 如“c:\login.dll”
#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的作者。