64,637
社区成员
发帖
与我相关
我的任务
分享
1。#ifdef IPCAMERA_EXPORTS
#define IPCAMAPI extern "C" __declspec(dllexport)
#define IPCAMCLASS __declspec(dllexport)
#else
#define IPCAMAPI extern "C" __declspec(dllimport)
#define IPCAMCLASS __declspec(dllimport)
#endif
2。typedef unsigned char IPCAMBYTE
typedef void * PCALLHANDLE
3。*define MAX_IPADDR_SIZE 256 //宏定义
*define MAX_USERNAME_SIZE 256
*define MAX_USERPASSWORD_SIZE 256
4。
typedef struct _Tipaddr
{
IPCAMBYTE addr[MAX_IPADDR_SIZE]
IPCAMBYTE port[MAX_IPADDR_SIZE]
}Tipaddr;
typedef struct _Tuserinfo
{
IPCAMBYTE username[MAX_USERNAME_SIZE]
IPCAMBYTE userpassword[MAX_USERPASSWORD_SIZE]
}Tuserinfo;
5。typedef void (*pcbpassiveServiceConnectFunc)(PCALLHANDLE pcall,Tipaddr callAddr);
6。IPCAMAPI PCALLHANDLE makeCall(Tipaddr callAddr,Tuserinfo userInfo,int& nErr);
//启动IPCamera SDK
IPCAMAPI void startIPCamSDK(Tglobalconfig gconfig);
//停止IPCamera SDK
IPCAMAPI void stopIPCamSDK();
// 通信链路操作接口
//主动生成一个面向IPCamera设备的呼叫实体
IPCAMAPI PCALLHANDLE makeCall(Tipaddr callAddr, Tuserinfo userInfo, int& nErr);
//生成一个监听服务
IPCAMAPI int makeService(Tipaddr serviceAddr);
//关闭一个监听服务
IPCAMAPI void deleteService(Tipaddr serviceAddr);
//清除所有监听服务
IPCAMAPI void clearServices();
//被动生成一个面向IPCamera设备的呼叫实体
IPCAMAPI int acceptCall(PCALLHANDLE pCall, Tuserinfo userInfo);
//获取呼叫实体信息
IPCAMAPI int getCallInfo(PCALLHANDLE pCall, Tcallinfo &callInfo);
//释放呼叫实体资源
IPCAMAPI void deleteCall(PCALLHANDLE pCall);
//释放所有呼叫实体资源
IPCAMAPI void clearCalls();
const
MAX_IPADDR_SIZE = 256;
MAX_USERNAME_SIZE = 256;
MAX_USERPASSWORD_SIZE = 256;
type
IPCAMBYTE = Byte;
PCALLHANDLE = PChar;
TSipaddr = record
addr: IPCAMBYTE[MAX_IPADDR_SIZE];
port: IPCAMBYTE[MAX_IPADDR_SIZE];
end;
Tuserinfo = record
addr: username[MAX_USERNAME_SIZE];
port: userpassword[MAX_USERPASSWORD_SIZE];
end;
TPSC = procedure(pcall: PCALLHANDLE; callAddr: TSipaddr); stdcall;
TMakeCall = function(callAddr: TSipaddr; userInfo: Tuserinfo; var nErr: PInteger): PCALLHANDLE; stdcall;
var
hDll: Thandle;
pcbpassiveServiceConnectFunc: TPSC;
makecall: TMakeCall;
procedure TForm1.LoadDLL;//载入DLL
begin
hDll := LoadLibrary('../dll/xxx.dll');//载入DLL
if hDll > 0 then
try
@pcbpassiveServiceConnectFunc := GetProcAddress(hDll, PChar('pcbpassiveServiceConnectFunc'));
@makecall := GetProcAddress(hDll, PChar('makeCall'));
except
Exit;
end;
end;