当前位置: 首页 > news >正文

VS2022下载+海康SDK环境配置实现实时预览

一.VS2022下载

去官网下载就可以了:https://visualstudio.microsoft.com/zh-hans/vs/

下载Community版本是免费的。

(2)下载后得安装包VisualStudioSetup.exe

打开:点击继续

等待下载完成,出现如下界面,这里是选择安装包和安装地址,

选这三个就可以了,其他包需要的时候可以在商店下载,放心的点击安装。

这里注意缓存文件与安装文件不能放一起,且不要有中文路径设置好后点安装

等待点确定就好。

二.配置海康环境

我们先启动VS2022,点击创建新项目

选择空项目,点击下一步

名字,路径自己定,注意要打上√

创建好后就是这样

下面我们打开海康的官方包,首先先把官方包中的路径改写为英文。

​右击头文件,添加,现有项

将这四个文件全部添加进去

右键项目名选择属性

链接器,常规,附加库目录,选择要导入的库文件

库文件如下图:将路径改成下列文件夹路劲即可

链接器,常规,添加依赖项,输入HCNetSDK.lib

右键项目名,属性,C/C++,预处理器,预处理器定义,添加:_CRT_SECURE_NO_WARNINGS

我们检查一下常规,输出目录建议新建一个新文件夹

我们需要将库文件全部复制到输出目录中

至此,我们的配置基本就好了。

三.测试代码

#include <windows.h>
#include <iostream>
#include "HCNetSDK.h"#pragma comment(lib, "Ws2_32.lib")
#pragma comment(lib, "HCCore.lib")
#pragma comment(lib, "HCNetSDK.lib")using namespace std;// 全局变量
LONG g_lUserID = -1;
LONG g_lRealHandle = -1;// 异常回调
void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void* pUser)
{if (dwType == EXCEPTION_RECONNECT){cout << "[INFO] Reconnect at " << time(NULL) << endl;}
}// 窗口回调
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{switch (message){case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;
}int main()
{// 控制台输出AllocConsole();freopen("CONOUT$", "w", stdout);cout << "[INFO] Console started." << endl;// 注册窗口HINSTANCE hInstance = GetModuleHandle(nullptr);WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.hInstance = hInstance;wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);wcex.lpszClassName = L"HKPreviewWndClass";RegisterClassEx(&wcex);// 创建显示窗口HWND hWnd = CreateWindowW(L"HKPreviewWndClass", L"Hikvision Preview",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 800, 600,nullptr, nullptr, hInstance, nullptr);ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd);// 初始化 SDKNET_DVR_Init();NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, TRUE);NET_DVR_SetExceptionCallBack_V30(0, nullptr, g_ExceptionCallBack, nullptr);// 登录设备NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };struLoginInfo.bUseAsynLogin = 0;strcpy_s(struLoginInfo.sDeviceAddress, "169.254.42.230"); // 替换你的设备IPstruLoginInfo.wPort = 8000;strcpy_s(struLoginInfo.sUserName, "admin");strcpy_s(struLoginInfo.sPassword, "Ding09503");NET_DVR_DEVICEINFO_V40 struDeviceInfo = { 0 };g_lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfo);if (g_lUserID < 0){cout << "[ERROR] Login failed, code: " << NET_DVR_GetLastError() << endl;NET_DVR_Cleanup();return -1;}cout << "[INFO] Login success!" << endl;// 启动预览NET_DVR_PREVIEWINFO struPreviewInfo = { 0 };struPreviewInfo.hPlayWnd = hWnd; // 显示窗口struPreviewInfo.lChannel = 1;    // 通道号struPreviewInfo.dwStreamType = 0; // 主码流struPreviewInfo.dwLinkMode = 0;   // TCPstruPreviewInfo.bBlocked = 1;     // 阻塞g_lRealHandle = NET_DVR_RealPlay_V40(g_lUserID, &struPreviewInfo, nullptr, nullptr);if (g_lRealHandle < 0){cout << "[ERROR] Preview failed, code: " << NET_DVR_GetLastError() << endl;NET_DVR_Logout(g_lUserID);NET_DVR_Cleanup();return -1;}cout << "[INFO] Preview started successfully!" << endl;cout << "Press Enter to stop..." << endl;getchar(); // 等待用户按回车// 停止预览与清理if (g_lRealHandle >= 0) NET_DVR_StopRealPlay(g_lRealHandle);if (g_lUserID >= 0) NET_DVR_Logout(g_lUserID);NET_DVR_Cleanup();cout << "[INFO] SDK cleanup done." << endl;return 0;
}

点击调试就可以运行了


文章转载自:

http://MRjShxCI.fgsqz.cn
http://rE0WNVxs.fgsqz.cn
http://BDtxwNOB.fgsqz.cn
http://YAT4rOK0.fgsqz.cn
http://a4BcLgmd.fgsqz.cn
http://AqbQmakw.fgsqz.cn
http://VtXIIyE1.fgsqz.cn
http://MsQLwlf9.fgsqz.cn
http://paptlfjL.fgsqz.cn
http://g0sEr8kt.fgsqz.cn
http://JKNCem1r.fgsqz.cn
http://4zwW8lLq.fgsqz.cn
http://4KnMdSO3.fgsqz.cn
http://wK8Z8Sth.fgsqz.cn
http://IrRjEZKm.fgsqz.cn
http://79ahsg2l.fgsqz.cn
http://BdesGaaX.fgsqz.cn
http://RvkHOcum.fgsqz.cn
http://HE5MEhUg.fgsqz.cn
http://NxnUFoEi.fgsqz.cn
http://y4700qUu.fgsqz.cn
http://8cvYlMyd.fgsqz.cn
http://1xhxy0yh.fgsqz.cn
http://7zb0qxIm.fgsqz.cn
http://0bUIzGOI.fgsqz.cn
http://tGOydXbE.fgsqz.cn
http://wXLohfg0.fgsqz.cn
http://GttG3RCc.fgsqz.cn
http://3l65ltjO.fgsqz.cn
http://lZORlNbe.fgsqz.cn
http://www.dtcms.com/a/383094.html

相关文章:

  • 前端基础 —— C / JavaScript基础语法
  • 手搓一个 DELL EMC Unity存储系统健康检查清单
  • 字节M3-Agent:如何实现一个支持多模态长期记忆与推理的Agent
  • TCL华星计划投建第8.6代印刷OLED产线
  • Qt学习:moc生成的元对象信息
  • Java—JDBC 和数据库连接池
  • 软件工程实践四:MyBatis-Plus 教程(连接、分页、查询)
  • 用 Go 快速上手 Protocol Buffers
  • Java Stream 流学习笔记
  • Linux线程id与简易封装线程实现
  • 公链分析报告 - Secret Network
  • JavaScript 简单链表题目试析
  • 【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
  • 电商AI导购系统的模型部署架构:TensorFlow Serving在实时推荐中的实践
  • 光射三缝实验
  • K8s部署 Redis 主从集群
  • Android点击桌面图库应用启动流程trace分析
  • 【抗量子安全】全球视角下 PQC 与 QKD 技术洞察:政策引领与产业演进
  • 代码随想录学习摘抄day9(回溯1-11)
  • 数据处理指令
  • SpringBoot 中 ZK 与 Kafka 节点选择逻辑:底层原理与实践解析
  • 事务与mysql数据库锁的关系
  • 继承类模板:函数未在模板定义上下文中声明,只能通过实例化上下文中参数相关的查找找到
  • 07-Redis 基础操作全攻略:从键管理到数据类型判断
  • 【linux】特殊权限
  • [数据结构] 排序
  • Python网络与多任务编程:TCP/UDP实战指南
  • Elasticsearch面试精讲 Day 17:查询性能调优实践
  • Go-zero 构建 RPC 与 API 服务全流程
  • CRI容器运行时接口