前提

SDK版本 CH-NetSDK(Windows32)V5.2.0.0_build20221008

开发环境 VS2017

编译

需要将NetSdk.cpp文件添加到工程文件,该文件包含了加载动态库,获取SDK API函数指针的代码

启动Demo示例\3-MFC综合示例路径下解决方案

提示出错

static auto_ptr<char> pcBuf (new char [iLogFileSize]);

原因

该类型已经被废弃

解决方案

void CLS_NVSLogPage::UI_UpdateNVSLogList()
{
int iLen = 0;
const int iLogFileSize = 1024*1024;
//static auto_ptr<char> pcBuf (new char [iLogFileSize]);
static char* pcBuf(new char[iLogFileSize]);
//memset(pcBuf.get(), 0, iLogFileSize);
memset(pcBuf, 0, iLogFileSize);
m_edtLogInfo.Clear();
//if(0 == NetClient_LogFileGetDetails(m_iLogonID, pcBuf.get(), &iLen))
if (0 == NetClient_LogFileGetDetails(m_iLogonID, pcBuf, &iLen))
{
if(iLen)
m_edtLogInfo.SetWindowText(pcBuf);
//m_edtLogInfo.SetWindowText(pcBuf.get());
}
else
{
AddLog(LOG_TYPE_FAIL,"","LogFileGetDetails Error!(%d)",m_iLogonID);
}
}

函数说明

LoadNVSSDK

NetSdk.cpp中加载动态库用的是相对路径,如果启动程序跟DLL不在同一个路径下,将加载失败,返回NULL

关注:g_hNVSSDK = LoadLibrary("NVSSDK.dll");


void* g_pvInstance = NULL;
int LoadNVSSDK()
{
if (g_pvInstance) {
return -2;
} else {
#ifdef WIN32
g_pvInstance = LoadLibrary("NVSSDK.dll");
#else
g_pvInstance = dlopen("libnvssdk.so", RTLD_LAZY);
#endif
if (NULL == g_pvInstance) {
return -1;
}
}

NetClient_Logon

登录操作成功后并不代表成功登录服务器。通过回调或者消息获得登录状态登录后,会获得一个系统消息(如果设置了消息句柄),可以从消息判断登录是否成功。


NetClient_StartRecv_V4

等待登陆成功的消息回调,然后才调用该函数进行连接视频


问题记录

1SDK例子云台控制不灵敏

甚至控制不了,网页控制正常