如题,下面是VC的声明。一个DLL的 {* @brief 选中摄像机控制通道打开/关闭
* @param bCtrlStart TRUE-打开控制通道,FALSE-关闭控制通道
* @return 1 成功, -1 失败}extern "C" {
...
...
int __declspec(dllexport) CYNET_CtrlStart(BOOL bCtrlStart);
...
...
}
这个是我声明的函数类型。我想LoadLibrary,再去GetProcAddress,来动态调用。
TCYNET_CtrlStart = function(bCtrlStart: Boolean): Integer;cdecl;问题
1.我这样的声明,是否正确?
2.能不能使用动态载入的方式去调用?
3.由于这DLL还有其他函数,部分函数调用都正常,而只是这个CYNET_CtrlStart(BOOL bCtrlStart)函数调用时,总是返回0(失败),很纠结中。
* @param bCtrlStart TRUE-打开控制通道,FALSE-关闭控制通道
* @return 1 成功, -1 失败}extern "C" {
...
...
int __declspec(dllexport) CYNET_CtrlStart(BOOL bCtrlStart);
...
...
}
这个是我声明的函数类型。我想LoadLibrary,再去GetProcAddress,来动态调用。
TCYNET_CtrlStart = function(bCtrlStart: Boolean): Integer;cdecl;问题
1.我这样的声明,是否正确?
2.能不能使用动态载入的方式去调用?
3.由于这DLL还有其他函数,部分函数调用都正常,而只是这个CYNET_CtrlStart(BOOL bCtrlStart)函数调用时,总是返回0(失败),很纠结中。
vc的BOOL实际上是int
发布的接口或函数, 想兼容性好就全部都 stdcall
VC的函数不能直接返回接口类型, 普通指针要吧, 但接口类型的都不行
* @param *ip 准备添加到库的摄像机的IP地址
* @param portc 准备添加到库的摄像机的控制端口
* @param ports 准备添加到库的摄像机的传输端口
* @return 1 成功, -1 失败
* @par 示例:
* @code
* CYNET_AddCamera(ip, 8886, 8888);
* CYNET_SelectCamera(ip);
* @endcode
int __declspec(dllexport) CYNET_AddCamera(char *ip, USHORT portc, USHORT ports);}下面是我用delphi的声明。 TCYNET_AddCamera = function(pcIp: PChar; nPortc: Word; nPorts: Word): Integer;cdecl;不知pcIp翻成PChar,怎么样。
USHORT应该也是WORD的类型吧?0-65535 这样?
unsigned short 对应 delphi的word