目前正在用BCB6开发个基于海康流媒体的小程序,采用动态调用海康提供动态连接库client.dll
首先在FormCreate中动态调用了DLL,
然后执行InitStreamClientLib和HIKS_CreatePlayer都正常,返回值也正常.
但执行到HIKS_OpenURL,就报内存出错了,程序异常退出,但在海康服务端上可以看到连接上了,但只是3秒左右时间,估计是由于程序异常退出,不知道是程序哪写错了,请高手指教一下.
HIKS_OpenURL在头文件中的定义typedef int __stdcall DLL_HIKS_OpenURL(HSESSION hSession,const char* pszURL,int iusrdata);
调用HIKS_OpenURL的语句
char ip[100];
if (HIKS_OpenURL!=NULL)
{
m_URLvalue="rtsp://192.168.1.38/192.168.1.95:8000:HIK-DS8000HC:0:0:001:12345/av_stream";
int i=m_URLvalue.Length();
Label1->Caption=IntToStr(i);
int j=0;
for (j=0;j<i;j++)
{
ip[j]=m_URLvalue[j+1];
}
i=(*HIKS_OpenURL)(MyHSESSION,ip,0);
Memo1->Lines->Add("Open URL:"+IntToStr(i));
}
------解决方案--------------------
我都是用implib输出lib来用的,没有直接使用它的DLL
------解决方案--------------------
- C/C++ code
char ip[100]; if (HIKS_OpenURL!=NULL) { AnsiString m_URLvalue="rtsp://192.168.1.38/192.168.1.95:8000:HIK-DS8000HC:0:0:001:12345/av_stream"; int i=m_URLvalue.Length(); Label1->Caption=AnString(i); strcpy(ip,m_URLvalue.c_str()); i=DLL_HIKS_OpenURL(MyHSESSION,ip,0); Memo1->Lines->Add("Open URL:"+AnString(i)); }