采用VS2019编译运行海康威视MFC综合示例Demo
一、文章背景:
今天下午有个从事海康威视监控业务的朋友突然找我帮忙,朋友从海康威视官网下载了一个 CH-HCNetSDKV6.1.4.42_build20200527_win32 海康设备SDK压缩包,其中的C++ MFC综合示例. ClientDemo.sln 采用VS2019编译报错异常无法启动。
爽快的答应后被坑了好几个小时才把Demo示例跑起来,顺手写个文章记录一下,后来者可以少踩一些坑坑。
项目已调通,可直接单击下载运行;
二、操作步骤:
1、海康威视设备网络SDK下载:
- 当前最新版本:SDK_V6.1.4.42(for Windows32)
- 官方下载地址:https://www.hikvision.com/cn/download_more_401.html#prettyPhoto
- MFC综合示例目录:CH-HCNetSDKV6.1.4.42_build20200527_win32\Demo示例\1-
MFC综合示例\ ClientDemo.sln
2、VS2019 MFC开发环境配置:
- 打开 Visual Studio Installer => 修改 => 单个组件
- 选择 单个组件 勾选如下4个组件:
3、MFC综合示例编译运行:
-
用VS2019打开MFC综合示例 ClientDemo.sln:
-
根据IDE提示升级项目Windows SDK 版以及平台工具:
-
F6直接编译项目报错:
错误 C4430 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int ClientDemo
E:\项目合集\CH-HCNetSDKV6.1.4.42_build20200527_win32\头文件\DecodeCardSdk.h 152
解决方法:
头文件地址: CH-HCNetSDKV6.1.4.42_build20200527_win32\头文件\DecodeCardSdk.h
第11行代码: #define DLLEXPORT_API extern “C” __declspec(dllexport) ;
extern "C"后面需要增加一个空格
-
F6继续编译项目报错:
(1)警告 MSB8004 Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。
(2)错误 D8016 “/ZI” 和 “/Gy-” 命令行选项不兼容 -
项目=> 右键属性=> 配置属性=> 常规=> 输出目录:尾部添加一个反斜杠 ‘/’
-
项目=> 右键属性=> 配置属性=> C/C++=>调试信息格式:选择程序数据库 (/Zi)
-
项目=> 右键属性=> 配置属性=> C/C++=> 代码生成=> 启用函数级链接:选择 否 (/Gy-)
-
F6继续编译项目报错:
(1)错误C4839将类 “CFileException” 作为可变参数函数的参数的非标准用法
(2)错误C2280“CFileException::CFileException(const CFileException &)”: 尝试引用已删除的函数 -
双击错误导航到 DlgScreenLogoCfg.cpp 第119行 简单调整代码:
DlgScreenLogoCfgUniform.cpp 第129行 进行同样简单处理,需要具体错误信息自己处理:
116 if (!m_logoFile.Open(m_csFilePath, CFile::modeRead, &fileException))
117 {
118 //CString csStr; 直接屏蔽
119 //csStr.Format("File Open failed , err = %d\n", fileException);直接屏蔽
120 MessageBox("File Open failed");
121 return;
122 }
- 继续F6漫长的的等待后编译通过,Ctrl+F5运行项目效果如下:
三、小结:
已调通项目下载地址:https://download.csdn.net/download/liuyonghong159632/12794621
解决问题花了6个小时,这篇文章编辑就花了2个多小时 真心伤不起
有朋自远方来 虽远必诛,欢迎加微交流: 15249207822