
C++
文章平均质量分 72
sanqima
这个作者很懒,什么都没留下…
展开
-
常用高压缩率的视频容器格式,并进行大比例压缩
常用的高压缩率视频容器格式,包括*.mp4 、*.mkv、*.webM等。容器格式本身并不直接决定压缩率,而是取决于容器中所使用的视频编码格式等因素。这里以700MB视频文件压缩为90MB文件,但清晰度保持不变,进行说明。原创 2025-02-22 22:07:44 · 821 阅读 · 0 评论 -
解决“QString的split()函数分割中文“报错
在使用Qt平台的QString类里的split()函数,分割.txt文件里中文的字符串时,发现中文会乱码。问题原因:中文使用UTF-16编码。解决方法:将.txt文件保存为UTF-16编码,然后使用split()去分割对应的字符串即可。即将要解析的.txt文件其字符编码,改成UTF-16,比如,UTF-16 LE BOM 或 UTF-16 BE BOM,然后保存即可。原创 2025-02-20 19:38:27 · 312 阅读 · 0 评论 -
解决QPixmap报“QPixmap::grabWindow(): Unable to copy pixels from framebuffer“问题
今天在使用QPixmap::grabWindow()截图时,弹出“QPixmap::grabWindow(): Unable to copy pixels from framebuffer”错误。问题原因:QPixmap::grabWindow()这个函数适用于Qt5版本截屏,该函数在Qt4上表现不稳定,经常出现“Unable to copy pixels from framebuffer”错误。解决方法:建议改成QPixmap::grabWidget()来进行截图。原创 2025-02-13 21:09:24 · 282 阅读 · 0 评论 -
解决QTimer报“Timers cannot be started from another thread“错误
问题原因:QTimer本身不支持跨线程调用。解决方法:QTimer的运行,需要它所在的线程支持事件循环,若没有事件循环,则调用QTimer::start()语句时,会报"Timers cannot be started from another thread"错误,即QTimer失效。所以,要想让QTimer在子线程里正常运行,则需要把该子线程的事件循环开启即可。原创 2025-02-11 23:57:19 · 1377 阅读 · 0 评论 -
解决“SVN无法上传或下载*.so、*.a等二进制文件“问题
今天,在使用Subversion提交代码到服务器时,发现无法提交*.a、*.so等二进制文件,右击这些文件,发现其属性为ignored。问题原因:SVN的配置文件里,屏蔽了*.a、*.so文件的上传与下载,并把这些文件标记了ignores。解决方法:在SVN的配置文件里,去掉*.a、*.so文件的ignores标记,重启电脑即可。原创 2024-12-19 21:13:41 · 604 阅读 · 0 评论 -
解决“https://aka,ms/vs/16/release/channel下载通道清单“问题
有时候,在windows平台安装VS2019时,弹出"https://aka,ms/vs/16/release/channel"错误,出现该问题的原因有很多,比如,原因1:电脑上安装了2个版本的VS2019。解决方法1:把这个2个VS2019全部下载,然后,使用腾讯电脑管家,清理一下注册表,再安装自己想要的VS2019。问题原因2:VS2019的镜像放在aka.ms站点,该站点需要“科学上网”。解决方法2:先在CMD黑框框里ping一下aka.ms地址,获取其IP地址,原创 2024-12-02 00:33:04 · 1275 阅读 · 0 评论 -
解决“ VMware Tools for Windows Vista and later“报错问题
今天,在Win7虚拟机上安装VMware Tools,报"VMware Tools for Windows Vista and later"证书错误,出现该问题的原因是:VMware Tools的版本太高,与当前的虚拟机不兼容。解决方法:在VMware官网,下载一个低版本的VMware Tools.iso文件,然后,在虚拟机的属性页,加载该VMware Tools.iso.iso文件,启动虚拟机之后,手动安装该工具即可。原创 2024-12-01 23:55:44 · 1128 阅读 · 0 评论 -
解决“win7系统无法定位程序输入点 SetDefaultDllDirectories“问题
点击exe,弹出"系统无法定位程序输入点SetDefualtDllDirectories"错误。出现这种情况的原因:当前系统缺少补丁KB253363,或者补丁KB4457144。解决方法:安装这2个补丁中的任何一个,即可修复该问题。所以,。这里以Window7 64位的桌面系统为例,介绍补丁KB4457177的安装方法,其他系统,可以仿照此方法进行操作即可。原创 2024-12-01 23:15:39 · 2698 阅读 · 0 评论 -
解决“Windows锁屏时WiFi自动关闭“问题
在Windows 7电脑A上插上一个USB无线网卡,按快捷键Win+L,给Win7锁屏,等约5分钟,使用实验室里其他的一台电脑B,给电脑A发送ping命令,发现无法ping通。输入密码,按回车键,重新进入电脑A,发现Wifi图标处于"转圈圈",接着,Wifi又自动连接好网络。在Windows系统里,有个开关控制USB无线Wifi的供电,把这个开关禁用,就可以解决"Windows锁屏时Wifi自动关闭"问题。原创 2024-11-14 23:27:58 · 2059 阅读 · 0 评论 -
搭建VisualSVN Server服务器与SVN客户端,下载或提交代码
代码版本管理工具,常见的有Git、SVN这2款。Git在Linux系统上用的比较多,而SVN则在Windows用的比较广泛。当然,这2款软件既有Linux版本,也有Windows版本。下面,介绍SVN的安装方法,SVN包括SVN服务器、SVN客户端。SVN服务器:VisualSVN Server(免费) 或者 Visual SVN(收费)SVN客户端:TortoiseSVN(免费)原创 2024-11-10 16:22:34 · 2079 阅读 · 0 评论 -
LFU算法 初始频率 动态频率
LFU(Least Frequently Used)算法是一种缓存淘汰策略,其核心思想是根据数据的访问频率来决定淘汰哪些数据。具体来说,LFU算法认为如果一个数据在过去一段时间内被访问的次数很少,那么它在未来被再次访问的概率也很低。因此,当缓存空间不足时,LFU算法会选择访问频率最低的数据进行淘汰。在C++中实现LFU算法,通常需要以下几个步骤:数据结构设计:LFU算法通常需要一个哈希表和一个优先队列。哈希表用于存储每个元素的访问计数,键是元素的标识,值是元素的访问次数。原创 2024-10-07 10:21:38 · 899 阅读 · 0 评论 -
解决Qt报“undefined reference to vtable for“错误
今天在Qt工程里添加一个新类OneFunc,点击Qt工具栏的[构建项目]菜单栏时,弹出"undefined reference to vtable for OneFunc"错误。这里以OneFunc新类,添加到Qt工程HelloDesk为例,进行说明。出现该问题的原因,主要有4种:a)该新类没有添加到工程的.pro文件里;b)该新类含有Q_OBJECT宏,没有执行qmake命令;c)该新类的析构函数,缺少virtual关键字修饰;d)该新类的ui, 缺少.moc文件,需要重新moc一下;原创 2024-08-27 19:35:15 · 676 阅读 · 0 评论 -
卸载顽固的驱动或软件
在Windows系统,有些软件或驱动,为了防止被卸载,特地在C:\Windows\System32\drivers目录里,生成xxx.sys文件。这些xxx.sys文件,无法直接删除,用杀毒软件也很难卸载。这里介绍一种方法,可以卸载顽固的驱动或软件,就是进入系统的【安全模式】 --》找到该xxx.sys文件或软件,直接删除即可。原创 2024-07-21 20:20:28 · 3043 阅读 · 0 评论 -
VS2019安装MFC组件
VS2019支持的MFC版本是mfc140 ~ mfc142版本,它兼容VS2015、VS2017之前的老版本程序。VS2019支持的C++最高版本为C17,是Win7系统上最后一个可以安装的IDE。原创 2024-07-20 12:02:05 · 3227 阅读 · 0 评论 -
解决Linux环境Qt报“cannot find -lgl“问题
今天,在Ubuntu18环境下,安装Qt5.14.2之后,运行一个QWidget工程,发现Qt报"cannot find -lgl"错误。出现这种现象的原因:Qt的Path路径没有配置,缺少libqt4-dev依赖包和一些必要的组件。原创 2024-07-02 19:23:51 · 1674 阅读 · 0 评论 -
QSqlDatabase的数据库路径或名称问题
在Qt的数据库编程中,先是设置数据库的类型,然后是设置数据库文件的路径。这个setDatabaseName(“xxx.db”)函数,对路径的依赖比较敏感。在Windows平台上,需要将路径的分割符号斜杠,要写成2个//斜杠。原创 2024-05-05 11:01:29 · 652 阅读 · 0 评论 -
解决“未能正确加载QtVsToolPackage包“问题
在Visual Studio时,有时弹出"未能正确加载QtVsToolPackage包"问题,出现这种现象的是:qt-vsaddin升级失败或者版本不兼容,造成QtVsToolPackage无法加载。原创 2024-05-01 10:20:32 · 2586 阅读 · 0 评论 -
SQLServer设置端口,并设置SQLServer和SQLServer Browser服务
SQLServer默认使用动态端口,即每次启动sqlserver.exe时,端口port都会动态变化。若要使用静态端口,比如port=1433,则需要在SQL Server Configuration Manager(简称SSMS)里配置。这里以SQL Server 2005 Configuration Manager软件为例,进行说明.原创 2024-01-07 17:29:15 · 5289 阅读 · 0 评论 -
解决“SQLServer 添加数据库,报Error 5118“错误
当将把一个SQLServer数据库文件*.MDF和日志文件*.LDF,从电脑A拷贝到电脑B,然后在电脑B上,使用Microsoft SQL Server Management Studio添加该*.MDF文件,有时报"Error 5118"错误;出现这种问题的原因:当前文件采用压缩格式保存,需要取消这种压缩格式;解决方法:右击该*.MDF文件 --》属性 --》高级 --》去掉"压缩"--》应用 --》OK同理,右击该*.LDF文件--》属性 --》高级 --》去掉"压缩"--》应用 --》OK原创 2024-01-06 17:12:33 · 970 阅读 · 0 评论 -
解决SQLServer访问*.mdf文件“报Unable open file Error5120“问题
今天,在使用Microsoft SQL Server Management Studio附加Hello_Data.MDF数据库时,弹出“Unable to open the physical file *.MDF system error 5 Error:5120”错误;出现该问题的原因:当前用户对Hello_Data.MDF、Hello_Data.LDF没有读写权限。原创 2024-01-06 16:36:56 · 1486 阅读 · 0 评论 -
解决Qt“报无法定位程序输入点xxx于动态连接库“问题
今天,在使用Qt+VS2019编译工程时,弹出"无法定位程序输入点xxx于动态链接库"问题,如图(1)所示。出现这种问题的原因有很多:(1) 工程Release/Debug,与lib的Release/Debug不一致;(2)Qt的Path环境没有设置好,应该区分工程的32或64位,MSVC或MingW路径;(3) 子类没有实现父类的虚函数,导致编译报错。原创 2023-12-25 23:07:36 · 10089 阅读 · 0 评论 -
Qt Creator设置IDE的字体、颜色、主题样式
Qt是一款开源的、跨平台的C++开发框架,支持Windows、Linux、Mac系统,从1995发布第一版以来,发展迅猛,最开始是用于Nokia手机的Symbian(塞班)系统和应用程序开发,现在是用于嵌入式软件、桌面软件(比如WPS、VirtualBox)、Android软件等开发,到2023年12月,其最新的版本已经更新到了v6.6。而Qt Creator是Qt的开源实现IDE,现在已经集成到了Qt.exe里。这里介绍Qt Creator里字体、颜色、主题设置。原创 2023-12-09 11:21:10 · 13121 阅读 · 7 评论 -
Windows XP安装SVN软件
SVN全称为SubVersion,是Apache开源软件协议下,一个用于代码分布式管理的工具,其孵化的软件产品是TortoiseSVN,该软件是带图形界面的代码管理工具,类似于Git,多了一个图形界面,方便鼠标操作。Windows XP是微软于2001发表的一款32位的桌面操作系统,由于其耗内存少、运行速度快、操作方便,而大受欢迎。在2014年4月份,微软已停止该系统更新。虽然Windows XP不再更新,但一些嵌入式产商、超市售货系统、监控系统,仍然使用Windows XP。在XP上安装32位的SVN原创 2023-12-05 23:16:26 · 1427 阅读 · 0 评论 -
重命名com1.{d3e34b21-9d75-101a-8c3d-00aa001a1652}文件夹
后来google了好久,才发现它利用Windows畸形目录原理,让系统认为该文件夹是一个串口驱动或者一种打印机驱动,而规避删除或重命名。使用DeformityPath软件,就可以修改或者重命名该文件夹的名称和路径。原创 2023-11-19 16:11:55 · 741 阅读 · 0 评论 -
解决windeployqt打包exe的“VCINSTALLDIR is not set“问题
今天在使用windeployqt打包exe时,报"VCINSTALLDIR is not set"错误。出现这个问题的原因:VCINSTALLDIR 环境变量没有设置。若一台电脑里安装了多个VS,比如安装VS2013、VS2015、VS2017、VS2019等,则用英文的;分号,把这些路径连在一起,都放到VCINSTALLDIR环境变量里,然后重启电脑即可。原创 2023-11-16 23:21:40 · 2970 阅读 · 1 评论 -
C++ vector计算数组之和
在C++ vector是一个动态数组,支持按下标索引访问、顺序访问、动态扩容等。计算vector里的元素之和,既可以通过for循环遍历每一个元素,然后相加得到数组之和;也可以通过调用accumulate()库函数,输入vector的起点、终点、参考原点(默认是0或者0.000),来得到数组之和;还可以通过for_each+lamba表达式,来计算元素之和。比如,有一个数组std::vector arry = { 1,2,3,4,5,6,7,8,9 }, 计算这个arry数组之和。原创 2023-11-14 09:57:54 · 13295 阅读 · 0 评论 -
C++里的const变量、const函数、const指针、const数组等
在C++语言中,有时候需要使用常量,这里的常量是指广义的常量,包括const变量、const函数、const指针、const数组等等。常量,具有只读属性,即一旦值已经初始化,就只可读取,无法修改,类似于只读光盘一样,值已经写进常量区,只可读取,无法二次写入。原创 2023-11-05 10:18:31 · 522 阅读 · 0 评论 -
visual studio设置主题和背景颜色
visual studio2019默认的主题有4种,分别是浅白色、深黑色、蓝色、蓝(额外对比度),背景颜色默认是纯白色RGB(255,255,255)。字体纯白色看久了,眼睛会感到酸痛、疲劳,建议改成浅白RGB(250,250,250)、豆沙绿RGB(85,123,105)、透明蓝白色RGB(248,249,253)、炫酷黑RGB(30,30,30)或RGB(50,50,50)等柔软的颜色。原创 2023-10-12 21:53:20 · 15817 阅读 · 0 评论 -
生成Release版本的.pdb文件
软件分为Debug版本、Release版本这2种版本,其中Debug版本是带有.pdb调试信息文件,而Release版本不带.pdb调试信息文件。软件发布时,一般采用Release版本,若因内存泄漏、数组访问越界、除零错误、磁盘读写错误等异常,造成软件崩溃,会生成一个.dmp崩溃文件。该.dmp崩溃文件,如同飞机的黑匣子,记录软件(或飞机)处于崩溃那那一刻的堆栈信息、运行错误和执行的代码语句行。.dmp文件需要Release版本的exe携带.pdb调试信息或.pdb文件,才能解析到具体的代码崩溃行。原创 2023-10-06 08:27:53 · 3225 阅读 · 0 评论 -
visual studio禁用qt-vsaddin插件更新
visual studio里qt-vsaddin插件默认是自动更新的,由于qt-vsaddin插件新版本的操作方式与老版本相差较大,且新版本不稳定,容易出Bug,所以需要禁用其自动更新,步骤如下:点击VS2019菜单栏上的【扩展】--》 管理扩展 --》已安装 --》工具 --》Qt Visual Studio Tools --》去掉"自动更新此扩展"前面的对钩√原创 2023-10-03 17:12:10 · 1242 阅读 · 0 评论 -
在visual studio里配置Qt插件并运行Qt工程
Qt插件,也叫qt-vsaddin,它以*.vsix后缀名结尾。从visual studio 2010版本开始,VS支持Qt框架的开发,Qt以插件方式集成到VS里。这里简述在visual studio 2019里配置Qt 5.14.2插件,并配置Qt环境、编译和与运行Qt工程。原创 2023-10-02 23:14:31 · 22791 阅读 · 0 评论 -
在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe
grpc是google于2015年发布的一款跨进程、跨语言、开源的RPC(远程过程调用)技术。使用C/S模式,在客户端、服务端共享一个protobuf二进制数据。在点对点通信、微服务等领域应用非常广泛。原创 2023-09-02 13:21:30 · 3366 阅读 · 0 评论 -
在windows上配置ninja环境
ninja使用并行任务来编译工程,比cmake编译快了一个数量级,是谷歌在2010年为了提高cmake的编译速度而开发一款编译工具。下面介绍在windows上配置ninja环境。原创 2023-09-02 11:24:41 · 12055 阅读 · 0 评论 -
在windows上安装Cmake软件
CMake是一个跨语言、跨平台、开源的编译工具,可以编译C、C++、Note.js、JavaScript、C#、Java、Python、Php、Object-C、Ruby等工程,需要设置对应的src源码目录、ext第三方依赖目录、CMakeList.txt构建列表,再使用cmake命令即可。2023年8月,CMake的版本更新到了v3.26.5版本,下面介绍在windows10上CMake软件。原创 2023-09-02 10:53:33 · 6215 阅读 · 0 评论 -
在window上配置NASM
NASM是支持x86、x64架构CPU的汇编器(汇编软件);NASM也支持大量的文件格式,包括Linux,*BSD,a.out,ELF,COFF,Mach−O,Microsoft 16−bit OBJ,Win32以及Win64,同时也支持简单的二进制文件生成。它的语法被设计的简单易懂,相较Intel的语法更为简单,支持目前已知的所有x86架构之上的扩展语法,同时也拥有对宏命令的良好支持。下面介绍在windows上环境配置NASM。原创 2023-08-27 20:04:20 · 1948 阅读 · 0 评论 -
vscode使用g++编译.c文件或.cpp文件
vscode是一个跨平台、轻量级、插件非常丰厚的IDE,这里介绍在vscode里使用g++来编译.c文件或.cpp文件,同时,也会介绍Code Runner在vscode里的使用。g++也叫GCC, 在Window中,是使用MinGW方式来实现g++的,它分为32位和64配置g++haunj 位2个版本,其中,MinGW-64是64位的,MinGW-32是32位的。使用vscode编译.c文件、.cpp文件配置g++环境。原创 2023-07-23 09:35:05 · 8798 阅读 · 0 评论 -
解决“_mkdir无法识别空格目录“问题
在C++编程里,有时候需要创建一个文件夹,通常使用库函数_mkdir(const char* dirname)来新建一个文件夹,该库函数每次只能创建一个文件夹,不能级联创建。若要级联创建文件,则请用递归方式或者for循环方式调用_mkdir()。空格的等效替换为\40.原创 2023-07-09 10:23:05 · 524 阅读 · 0 评论 -
C++常用的音频工具库
C++开源的音频库有很多,比如irrKang、YSE、FFmpeg、FMOD、BASS等,这些音频库有的是跨平台,有的是"个人使用免费,企业使用收费"的许可机制。了解这些库的特性,对于音视频业务的处理和迁移非常有帮助。原创 2022-10-19 23:56:47 · 9440 阅读 · 0 评论 -
PlaySound的同步播放与异步播放
PlaySound是Windows平台独有的API函数,支持mp3、 mp3, mp2, mp1, ogg, flac, oga, ac3, aac, wav 和pcm等音频格式文件的播放,使用的库文件为winmm.lib,该库文件是Windows自带的库文件,只需要申明即可,不需要手动添加。它分为同步方式、异步方式2种。具体如下:点击Visual Studio工具栏的[File] --》新建 --》Visual C++ ---》Win32 --》Win32控制台应用程序 --》名称:DoPaly原创 2022-09-30 08:41:53 · 3775 阅读 · 0 评论 -
C++里sscanf()与swscanf()的使用
在C++中,常常需要对字符串进行分隔,可以使用string里的substring()+Find()的方式进行分隔,也可以使用sscanf、swscanf的方式进行分隔。可以看到substr()、sscanf()、swscanf()这3个库函数,在提取字符串方面是等价的。......原创 2022-08-27 11:21:50 · 1221 阅读 · 0 评论