老狼的专栏

工作中展现自我,学习中完美自我,生活中乐活自我!

  • 博客(436)
  • 资源 (20)
  • 收藏
  • 关注

原创 TightVNC H264编解码(一)

经过尽二个月的不断摸索,TightVNC终于支持H264编解码了,前期真正编写H264编解码器只花了一周左右时间,但是测试发现效果并不是太理想(帧率太低,延迟大),这大概是所有远程控制软件要处理的通病吧。作为一位经验丰富的程序员,造成这种问题的原因,有以下几点:1、抓屏?2、H264编码?3、TCP网络发送?4、H264解码?5、视频渲染?为了排除到底哪个环节出了问题,看来不摸透底层事务流程是行不通的,不得已摸透代码画出了下面这个简陋的流程图。Server端事务处理流程图.

2021-12-31 21:25:36 564 3

原创 QTHttpServer

资源从网上收集,包含httpserver、sslserver、http-parser三个模块,解决了编译过程中由于路径引用错误问题。下载链接:https://download.csdn.net/download/u012156872/20664799,下载编译即可应用到自己项目中,简单快速,不用造车。...

2021-07-31 11:57:38 382

原创 QT 界面设计篇(水波纹进度条QProgressBarWater)

效果图:头文件声明(QProgressBarWater.h):#ifndef QPROGRESSBARWATER_H#define QPROGRESSBARWATER_H#include <QWidget>#include <QPainter>#include <QPaintEvent>class QProgressBarWater : public QWidget{ Q_OBJECTpublic: explic.

2020-11-30 19:23:48 905

原创 EasyPR编译指南

1、下载源码https://github.com/liuruoze/EasyPRDownloadZIP或者git(https://github.com/liuruoze/EasyPR.git)将代码解压到硬盘目录下。例如F:\车牌识别\EasyPR(车牌识别)\EasyPR2、双击解决方案文件EasyPR.sln,用VSIDE(这里使用VS2019)打开,提示点击确定。3、选择libeasypr项目,编译出现如下错误这是因为没有配置OpenCV环境所致。4、...

2020-08-02 18:09:09 2496 6

原创 VS 关于打开程序时不是有效的Win32应用程序

程序本身是动态链接库,因为接口调用失败,于是改为控制台验证接口的正确性,无赖编译运行提示“无法启动程序......不是有效的Win32应用程序”。鉴于网上修改属性:配置属性-》常规-》配置类型:应用程序(.exe),配置属性-》链接器-》系统-》子系统:控制台(/SUBSYSTEM:CONSOLE)均不能解决问题,于是想到修改.vcxproj文件,经过逐行分析,锁定键false将true改为false,重新编译运行,问题解决。

2022-11-28 01:12:51 157

原创 OSG KML文件解析

KML结构清晰,起初用QXmlStreamReader(之前一直没使用过)解析,花了几小时没搞定,真费劲,后来改用pugixml,10分钟搞定。

2022-11-03 16:22:38 20

原创 OSG 根据经纬度、方向角和距离计算下一个点的经纬度

OSG 根据经纬度、方向角和距离计算下一个点的经纬度。

2022-10-31 14:50:07 25

原创 VC++ MD5加密

【代码】VC++ MD5加密。

2022-09-27 11:49:13 83

原创 Gh0st 远程管理系统新概念

接触Gh0st有很长一段时间了,对于插件或是界面已然是轻车熟路,从下月开始将分章节系统性详细讲解架构模式、以及如何设计自己企业的远控管理软件。

2022-08-31 10:50:24 56

原创 C++ 内存共享/软件守护

功能描述:在无人看守的情况下,防止软件意外退出。

2022-08-04 09:49:39 256

原创 GmSSL 在Windows上的使用(编译和使用)

1、源码的下载GitHub - guanzhi/GmSSL: 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱2、编译工具的下载首先安装VS开发工具,接着下载ActivePerl,打开VS命令提示符(管理员权限),并切换到 ActivePerl安装目录下3、编译指令C:\Perl64\bin\perl Configure VC-WIN32 no-asmX64位 指令如下:C:\Perl64\bin\perl Configure VC-WIN64Ano-asm..

2022-05-24 22:31:02 641 1

原创 VCPKG 包下载失败解决思路

vcpkg经常会遇到资源无法访问,可能是域名解析出了问题,我们只需要将域名解析后的ip地址添加到hosts文件列表中可解决此问题,如:185.199.108.133 raw.githubusercontent.com在此之前可先通过终端ping指令验证一下。linux系统中,hosts文件路径:/etc/hostswindows系统中,hosts文件路径:c:\windows\system32\drivers\etc\hosts域名解析,可通过IPAddreIPAddress查.

2022-03-11 08:43:17 1590

原创 TightVNC H264编解码(三)之去图像抖动

本以为服务器端改造完硬编码,客户端升级完解码功能之后,一切也就该收尾了,可没成想如鱼哽喉卡住了,客户端播放视频画面,当服务器端窗口有快速移动的时候,客户端显示窗口边缘会产生抖动(不够顺滑流畅),分析其原因:1、服务器端视频编码问题2、客户端视频解码问题3、网络数据丢包问题4、客户端渲染问题5、其它问题只能逐一排查了。在此之前,我完成了二件事,其一是编写了一个流媒体服务器,其二采用SDL库编写了一个实时视频流播放器,均是为后面的排查工作做铺垫。问题1、服务器视频编码问题将硬

2022-03-04 16:31:20 558 5

原创 macOS获取系统信息

代码在XCode下编译通过类定义:#ifndef SYSTEMINFO_H#define SYSTEMINFO_H#include <string>#include <vector>using namespace std;namespace shell { class StrUtil { public: static inline std::string& ltrim(std::string &str)

2022-03-03 21:17:37 379

原创 C++之xlsx文件操作之写操作

采用xlsxwriter开源库的实现,声明如下:#include "./xlsxwriter/include/xmlwriter.h"#include "./xlsxwriter/include/workbook.h"#include "./xlsxwriter/include/worksheet.h"#ifdef _DEBUG#pragma comment(lib, "./xlsxwriter/lib/debug/xlsxwriter.lib")#else#pragma comment(

2022-02-28 16:11:51 1056 7

原创 C++之xlsx文件操作之读操作

采用xlnt开源库的实现,声明如下:#define XLNT_STATIC 1#include "./xlnt/xlnt.hpp"#ifdef _DEBUG//#pragma comment(lib, "./xlnt/lib/xlntd.lib")#pragma comment(lib, "./xlnt/xlntd.lib")#else#pragma comment(lib, "./xlnt/lib/xlnt.lib")#endif // _DEBUGnamespace xlnt{

2022-02-28 16:02:44 1636

原创 Delphi中TEdgeBrowser控件初探

1、组件库安装Delphi IDE中的TEdgeBrowser虽然可以直接拖拽到界面TForm上来,但是却是无法直接使用的,究其原因是因为缺少相关的库文件,这里介绍最简单直接有效的方法:1、下载 nuget。nuget是一个开源项目的客户端下载工具,想要了解更多,请问度娘。2、打开终端,在命令行执行:.\nuget install Microsoft.Web.WebView2若要指定WebView2版本,可用如下指令.\nuget install Microsoft.Web.We

2022-02-28 09:14:14 1076

原创 C++连接Wlan/Wifi网络设备

本单元只介绍如何链接wifi设备,对信号强度不做涉及,另外链接指定wifi之前应该先判断wifi是否已经链接,如果已经链接就没必要再链接了,代码中采用的是没做链接判断,先直接断开然后重新进行链接,代码如下:#include <wlanapi.h>#pragma comment(lib, "wlanapi.lib")BOOL connectWlan(CString Name, CString SSID, CString Password){ BOOL bRet = FALSE; D

2022-02-28 08:54:15 1458 2

原创 已知文件被某进程占用,强行解除占用,并删除文件

BOOL GetVolumeNameByHandle(HANDLE hFile, LPTSTR szVolumeName, UINT cchMax){ BOOL bResult = FALSE; TCHAR szBuf[500] = { 0 }; TCHAR * pIter = szBuf; int i =0; BY_HANDLE_FILE_INFORMATION stFileInfo = { 0 }; do { if(FALSE == GetFileInformationByHa.

2022-02-23 13:48:04 514

原创 通过GDI+修改jpg文件EXIF属性

代码直接从旧项目工程里面抠出来的,抛砖引玉。主函数名称BOOL UpdataJpegExifCopyRightInfo(const wchar_t* filename, const char* exifCopyrightInfo)#include <windows.h>#include <gdiplus.h>#include <stdio.h>using namespace Gdiplus;#pragma comment(lib, "gdiplus.

2022-02-23 13:05:41 163

原创 TightVNC H264编解码(二)之硬编码库的编译

AVCodec * codec = avcodec_find_encoder_by_name("nvenc_h264");如果是默认的ffmpeg库,返回结果是NULL,看来是不带有硬编码功能的,重新编译分支ffnvcodec,不到半个小时编译完成,返回值终于ok了(^-^),继续编写代码:AVCodecContext *avctx = avcodec_alloc_context3(codec);int ret = avcodec_open2(avctx, codec, 0);返回值-40.

2022-01-08 20:54:24 622

转载 CMake应用:基础篇

CMake是一个开源、跨平台的编译、测试和打包工具,它使用比较简单的语言描述编译、安装的过程,输出Makefile或者project文件,再去执行构建。在使用IDE开发软件的过程中,代码的编译和构建一般是使用IDE自带的编译工具和环境进行编译,开发者参与的并不算多。如果想要控制构建的细节,则需要开发者自己定义构建的过程。本文主要介绍以下内容: 编译构建相关的核心概念及它们之间的关系 CMake的一般使用流程 一个简单的实例 一 核心概念1 gcc、make和cm.

2021-11-29 11:31:02 558

转载 CMake应用:核心语法篇

本文是深入CMakeLists.txt之前的前导文章,介绍CMake语言的核心概念,以及常用的CMake脚本命令,以期对CMake的语法能有比较好的认知和实践基础。在前一篇文章中介绍了CMake的核心概念,使用的一般流程,并通过一个实例讲解了CMake命令行工具之一的cmake命令的使用方法。该系列文章请关注本公众号的话题:#CMake,成为CMake高手指日可待。在开始深入如何编写完备的CMakeLists.txt之前,先了解下CMake的语言和它的组织方式对后续内容的理解是很有帮助的。..

2021-11-29 11:29:43 180

转载 CMake应用:CMakeLists.txt完全指南

CMake通过CMakeLists.txt配置项目的构建系统,配合使用cmake命令行工具生成构建系统并执行编译、测试,相比于手动编写构建系统(如Makefile)要高效许多。对于C/C++项目开发,非常值得学习掌握。在前两篇文章中已经介绍CMake的相关核心概念,使用的一般流程,以及CMake核心的语法和常用脚本命令: CMake应用:基础篇 CMake应用:核心语法篇 本文将会介绍如何书写一个完备的CMakeLists.txt文件,满足一般项目的基础构建要求,CMake的语法.

2021-11-29 11:28:39 719

转载 CMake应用:模块化及库依赖

当项目比较大的时候,往往需要将代码划分为几个模块,可能还会分离出部分通用模块,在多个项目之间同时使用;当然,也可能是依赖开源的第三方库,在项目中包含第三方源代码或者编译好的库文件。本文将会介绍CMake中如何模块化地执行编译,以及指定目标对相应库文件的依赖。在上一篇文章中,笔者介绍了一个比较完备的CMakeists.txt该如何书写。往期文章可以关注本号的话题:CMake,文章列表如下(文末可连续阅读):CMake应用:基础篇CMake应用:核心语法篇CMake应用:CMakeLists.

2021-11-29 11:27:41 835

转载 CMake应用:集成gtest进行单元测试

编写代码有bug是很正常的,通过编写完备的单元测试,可以及时发现问题,并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。在本系列前序的文章中已经介绍了CMake很多内容,本文是针对单元测试的外延。本系列更多精彩文章敬请关注公众号【很酷的程序员】的话题:CMake。本文主要介绍以下几个方面的内容: 何为单元测试 何为gtest .

2021-11-29 11:26:54 1006

转载 CMake应用:安装和打包

为了方便使用项目编译的目标文件,快速部署到目标目录,可以使用CMake的安装功能;如果需要对外发布,提供头文件、库文件、或者demo的压缩包则可以使用CMake的打包功能。在本系列前序的文章中已经介绍了CMake很多内容,在CMake应用:CMakeLists.txt完全指南一文中简略介绍了安装和打包,本文会更加深入地介绍CMake的安装打包功能。本系列更多精彩文章敬请关注公众号【很酷的程序员】的话题:CMake。本文主要介绍以下几个方面的内容: 安装库文件、可执行文件和所需要对外提供的头.

2021-11-29 11:25:41 2385

转载 CMake应用:从编译过程理解CMake

CMake和编译的过程是有对应关系的,理解了编译构建的过程,可以更加理解CMake的相关命令;理解其目的和用途,自然也就可以更好地运用CMake。在最近的CMake系列文章中,有小伙伴在实践使用的时候还是比较困惑,沟通之后了解到可能有的同学并不是计算机专业,对于编译原理、编译的过程可能并没有很了解,所以笔者写了一篇文章:GCC编译过程概述对GCC编译的过程做了一个概述。本文作为这篇文章的姊妹篇,依旧以GCC为例,在对GCC编译过程有一定了解的基础上,来进一步理解CMake如何通过CMak.

2021-11-29 11:23:37 324

转载 CMake应用:交叉编译

交叉编译指的在一个平台上生成另一个平台上的可执行代码。很多时候,开发的代码可能并不只是在开发主机的平台上执行,比如在Windows下开发的程序,希望能够在Linux、或者MacOS下执行;或者有时候目标平台根本就没有操作系统,没有对应的编译器,所以必然需要进行交叉编译。交叉编译笔者在工作中经常会遇到。笔者开发使用的宿主机一般都是Linux(Ubuntu),交叉编译的目的基本都是为了将程序代码编译成目标嵌入式平台的库文件,然后再在目标系统上调用集成,一般都是ARM系列的CPU。而对于不同操作系统(Wi.

2021-11-29 11:22:39 3951 2

转载 CMake应用:合并静态库

在实际项目中,往往需要将一些基础库或者算法库发布出去,但是不同项目可能需要用到不同的子模块,此时为了保持简洁,可能需要合并多个静态库为一个。在笔者的实际工作中,合并静态库的需求还是有的,而且大多数时候都是基于CMake的项目,所以希望能够基于不同配置,自动合并多个模块的静态库为一个,方便发布版本和管理。本文介绍的就是如何在CMake工程中,优雅地完成多个静态库目标的合并。本文仍以本系列的开源项目https://gitee.com/RealCoolEngineer/cmake-template为例.

2021-11-29 11:21:30 1849 2

转载 CMake应用:生成器表达式

目录 一 概述 二 常用的生成器表达式 1 布尔生成器表达式 2 字符串值生成器表达式 3 调试 CMake的生成器表达式不算是特别常用,但是有一些场景可能是必须要使用的;或者在针对不同编译类型设置不同编译参数的时候可以巧妙应用,从而减少配置代码。生成器表达式听起来稍微有点复杂,但是其实只需要掌握一些常用的功能就能够有所裨益,至于更加复杂的写法,在需要的时候研究一下即可。本文主要介绍下生成器表达式的概念、种类、和常用的一些生成器表达

2021-11-29 11:18:59 905 2

原创 C++ 多语言切换

如果设置UI资源文件非重点不做介绍。设置英文版接口:SetThreadUILanguage(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));此时如果操作系统的语言选择的是简体中文,那么掉系统的AfxMessageBox或是MessageBox,出现的按钮仍旧显示中文,解决方法:接口统一替换成类似如下这种:CString strTemp; strTemp.LoadString(IDS_CLOSE_APP);CString strTips; s

2021-11-18 11:25:51 806

原创 C++ xml库的选择

自从触及xml文件的读写,一直以来都是用的tinyxml2,接口简单,然而近期项目频繁出错,跟踪调试发现,问题出在了xml文件的读写上,当节点数超过百万级别的时候,内存暴增到G的当量,很显然程序会由于内存申请不足崩掉了。果断寻找替代品,百度搜索找到了pugixml开源库,将原有的调用tinyxml2接口的近千行代码替换之后,运行程序,一切顺利,速度感觉还较之前的有所提示。2者调用区别(被注释屏蔽掉的代码是tinyxml2接口调用部分): // xml文件声明 // tinyxml2::XM

2021-11-18 11:18:04 1097

原创 C++ 结束进程

有时候进程未正常退出,导致进程列表遗留僵尸进程,程序启动需要杀死这种僵尸进程。#include "TLHELP32.H"void TerminateSelfApplication(){ TCHAR szFileName[MAX_PATH] = { 0 }; TCHAR* szAppName = NULL; if (::GetModuleFileName(NULL, szFileName, MAX_PATH)) { szAppName = _tcsrchr(szFileName, '\.

2021-10-29 20:53:23 859

原创 Lazarus查询天气接口

提供API接口服务地址:API服务,天气API - 帮! (help.bj.cn)https://api.help.bj.cn/api/?id=45单元定义:unit utWeatherApi;{$mode objfpc}{$H+}interfaceuses Classes, SysUtils, fphttpclient, openssl, opensslsockets;const TCityCodeTable: array [1..7, 1..2] of string =.

2021-10-29 15:22:55 141

原创 Adobe XMP SDK项目应用(续2)

今日我想给给图像的exif属性里面增加一个SoftWare属性,毋庸置疑,最终是失败而告终。在SDk上面纠缠了半日,直奔核心代码而去,最终无功而返。问题的症结其实跟前几日差不多,修改xmp信息可以,但是修改exif信息,就得付出惨痛的代价,不断的调试...跟踪...调试...跟踪,问题点是跟踪出来了,在函数ExportTIFF_StandardMappings里面static voidExportTIFF_StandardMappings ( XMP_Uns8 ifd, TIFF_Manager *

2021-09-15 12:13:37 105

原创 Adobe XMP SDK项目应用(续1)

XMP-Tool-SDK功能确实非常完备,但是要想应用于实际软件产品,踩坑不少。近日就遇到将GPS信息写入exif扩展属性项,始终写入不进去。虽然前期项目对这个库已经做过深入学习,但是经过这次的项目再次涉及才知道,还远远不够深入。GPS信息写入代码其实很简单:CString sValue = pPosInfo->m_strRTKPOSlatitude;UINT deg = 0, min = 0, sec = 0, ref = 0;CSysUtils::LonOrLanToDegMinSe

2021-09-13 15:47:46 104

原创 MFC 打开文件夹选择框(WPS惹的祸)

请先看2张图:上图和下图,相信大多数人都会选择下面这种方式来选择文件目录吧,直观、操作方便。上图调用接口是SHBrowseForFolder,下图调用接口是CFolderPickerDialog,一直以来我都是使用的CFolderPickerDialog这种接口,但是近日一个新项目程序正常退出却报错,发生异常了(如下图),代码量太大,几经排除却发现罪魁祸首是调用了CFolderPickerDialog引起的,无赖之下换回了SHBrowseForFolder接口。经过考究,qing..

2021-09-09 09:34:03 197

原创 MFC中如何修改CGroupBox标题和背景色

添加引用#include "Uxtheme.h"#pragma comment(lib, "Uxtheme.lib")在OnInitDialog里面禁用控件系统主题SetWindowTheme(GetDlgItem(IDC_GROUPBOX1)->GetSafeHwnd(), _T(""), _T(""));在OnCtlColor里面重新对控件设置颜色设置if (nCtlColor == CTLCOLOR_STATIC){ pDC->SetBk...

2021-08-26 23:03:48 793

原创 VC++ CMemDC类的扩展(终结版)

上一版本链接:https://blog.csdn.net/u012156872/article/details/104966445,近期做窗口自绘,发现用该方法绘制非客户区仍存在问题,于是进行了功能简化和补充。定义和声明:#pragma oncenamespace sw { class CMemDC : public CDC { public: //构造函数可应用于非客户区窗口绘制 CCacheDC(CDC& dc, CWnd* pWnd) : m_dc(dc),

2021-08-22 11:23:35 144

Microsoft TTS语音修复

工具只要是针对市面上很多简化版操作系统,由于缺少(未注册)语音库文件,无法支持语音播放功能。

2022-06-24

QTHttpServer.zip

该源码从网上收集,解决了编译过程中遇到的疑难问题,可直接编译使用。

2021-07-31

layoutmgr.rar

VC++(MFC),UI布局管理器。功能类似QT的QLayout

2021-05-31

live555-windows.rar

VS2017编译通过,版本2021-05-17。X86和X64位。源码+库文件。

2021-05-31

SEAL3.4.5.rar

全同态加密算法,比较老的一个版本了。没有依赖太多的第方库,编译简单,适合初学者。

2021-05-31

VC++/Delphi下可用的GIS控件MapWinGIS(ocx)

基于MapWinGisv5.2.4.0 源码(自带第3方库)编译,扩展百度、高德等常用栅格图层。VS2019下可编译。

2021-03-31

GLFW v3.4库文件

GLFW v3.4编译库文件glfw3.lib(x86、x64)

2021-03-01

海康摄像机视频存储服务器

轻量级免费版海康摄像机视频存储服务器,附操作手册(无源码)

2021-03-01

MapWinGis第3方库

该资源是针对VS2019版编译所需要的第3方库文件,包括GDAL_SDK、curllib、geos、tiff等。压缩包直接解压到源码的support目录下使用。

2021-01-25

TS流封装(live555+faac).rar

使用live555的testRTSPClient来进行网络实时流获取,采用H264+AAC文件方式封装ts流文件。

2020-08-29

libzdb-3.2.2.zip

跨平台数据库访问连接池。基于最新版libzdb编译,编译工具是VS2019。自带Sqlite、Mysql和SqlServer库,Postgresql和Oracle未测试。

2020-08-18

电脑桌面录制工具(GIF文件).rar

VC++实现对Windows桌面的录制,并生成GIF动画文件。支持桌面文字书写、以及基本的画图操作等。

2020-05-27

HTTP网络文件服务器(Delphi版)

Http File Server。HFS网络文件服务器是专为个人用户所设计的HTTP档案文件传输系统,整套程序只有一个exe,运行方便。附件:源码。

2020-03-25

C++读写Excel文件

OpenXLSX是一套开源的读、写、创建、修改Excel文件(格式:xlsx)的C++库。附件内容:源码+示例。

2020-03-25

EasyRP车牌识别接口封装

EasyPR开源车牌识别库,源码里面仅仅是将EasyPR的Demo进行简单封装,导出为dll接口文件,方便项目使用。

2020-03-25

炫彩界面库源码(VC++)

炫彩界面库是基于DirectUI设计思想的一套界面库,接口全面,使用也非常方便,源码属早期版本(v1.5.1),仅供学习使用,现免费共享出来。

2020-03-25

ZIP包格式压缩/解压缩

简单易用的ZIP包格式压缩/解压缩源码文件,仅支持传统加密/解压方式。主类:CZipImplement,接口Zip_PackFiles、Zip_UnPackFiles、Zip_GetPackData。

2019-12-31

金涵电子LED控制卡系统

定制化合肥金涵电子LED控制卡系统,在官方标准版基础上,基于v5.2版开发包协议,扩展了事件管理功能(支持任意条事件)。

2019-12-18

工程制图软件

多年前的程序了,适合初学者。纯Delphi7版,无任何第3方控件库。可绘制直线、矩形、圆、弧线。支持图像移动、距离测量、删除、放大、缩小、旋转等功能。支持图像保存和打开。

2018-06-12

VC++简单画图

一款简单的画图程序,实现了直线、圆、方形基本图形的绘制,可设定线条颜色、大小和填充颜色。绘制图像可保存、打开。

2018-06-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除