C++
文章平均质量分 71
sanqima
这个作者很懒,什么都没留下…
展开
-
解决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 · 397 阅读 · 0 评论 -
卸载顽固的驱动或软件
在Windows系统,有些软件或驱动,为了防止被卸载,特地在C:\Windows\System32\drivers目录里,生成xxx.sys文件。这些xxx.sys文件,无法直接删除,用杀毒软件也很难卸载。这里介绍一种方法,可以卸载顽固的驱动或软件,就是进入系统的【安全模式】 --》找到该xxx.sys文件或软件,直接删除即可。原创 2024-07-21 20:20:28 · 468 阅读 · 0 评论 -
VS2019安装MFC组件
VS2019支持的MFC版本是mfc140 ~ mfc142版本,它兼容VS2015、VS2017之前的老版本程序。VS2019支持的C++最高版本为C17,是Win7系统上最后一个可以安装的IDE。原创 2024-07-20 12:02:05 · 1712 阅读 · 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 · 829 阅读 · 0 评论 -
QSqlDatabase的数据库路径或名称问题
在Qt的数据库编程中,先是设置数据库的类型,然后是设置数据库文件的路径。这个setDatabaseName(“xxx.db”)函数,对路径的依赖比较敏感。在Windows平台上,需要将路径的分割符号斜杠,要写成2个//斜杠。原创 2024-05-05 11:01:29 · 456 阅读 · 0 评论 -
解决“未能正确加载QtVsToolPackage包“问题
在Visual Studio时,有时弹出"未能正确加载QtVsToolPackage包"问题,出现这种现象的是:qt-vsaddin升级失败或者版本不兼容,造成QtVsToolPackage无法加载。原创 2024-05-01 10:20:32 · 1588 阅读 · 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 · 4890 阅读 · 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 · 828 阅读 · 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 · 1205 阅读 · 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 · 6424 阅读 · 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 · 10390 阅读 · 4 评论 -
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 · 1330 阅读 · 0 评论 -
重命名com1.{d3e34b21-9d75-101a-8c3d-00aa001a1652}文件夹
后来google了好久,才发现它利用Windows畸形目录原理,让系统认为该文件夹是一个串口驱动或者一种打印机驱动,而规避删除或重命名。使用DeformityPath软件,就可以修改或者重命名该文件夹的名称和路径。原创 2023-11-19 16:11:55 · 570 阅读 · 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 · 1682 阅读 · 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 · 9313 阅读 · 0 评论 -
C++里的const变量、const函数、const指针、const数组等
在C++语言中,有时候需要使用常量,这里的常量是指广义的常量,包括const变量、const函数、const指针、const数组等等。常量,具有只读属性,即一旦值已经初始化,就只可读取,无法修改,类似于只读光盘一样,值已经写进常量区,只可读取,无法二次写入。原创 2023-11-05 10:18:31 · 473 阅读 · 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 · 12963 阅读 · 0 评论 -
生成Release版本的.pdb文件
软件分为Debug版本、Release版本这2种版本,其中Debug版本是带有.pdb调试信息文件,而Release版本不带.pdb调试信息文件。软件发布时,一般采用Release版本,若因内存泄漏、数组访问越界、除零错误、磁盘读写错误等异常,造成软件崩溃,会生成一个.dmp崩溃文件。该.dmp崩溃文件,如同飞机的黑匣子,记录软件(或飞机)处于崩溃那那一刻的堆栈信息、运行错误和执行的代码语句行。.dmp文件需要Release版本的exe携带.pdb调试信息或.pdb文件,才能解析到具体的代码崩溃行。原创 2023-10-06 08:27:53 · 2314 阅读 · 0 评论 -
visual studio禁用qt-vsaddin插件更新
visual studio里qt-vsaddin插件默认是自动更新的,由于qt-vsaddin插件新版本的操作方式与老版本相差较大,且新版本不稳定,容易出Bug,所以需要禁用其自动更新,步骤如下:点击VS2019菜单栏上的【扩展】--》 管理扩展 --》已安装 --》工具 --》Qt Visual Studio Tools --》去掉"自动更新此扩展"前面的对钩√原创 2023-10-03 17:12:10 · 959 阅读 · 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 · 18165 阅读 · 21 评论 -
在Windows10上编译grpc工程,得到protoc.exe和grpc_cpp_plugin.exe
grpc是google于2015年发布的一款跨进程、跨语言、开源的RPC(远程过程调用)技术。使用C/S模式,在客户端、服务端共享一个protobuf二进制数据。在点对点通信、微服务等领域应用非常广泛。原创 2023-09-02 13:21:30 · 2760 阅读 · 0 评论 -
在windows上配置ninja环境
ninja使用并行任务来编译工程,比cmake编译快了一个数量级,是谷歌在2010年为了提高cmake的编译速度而开发一款编译工具。下面介绍在windows上配置ninja环境。原创 2023-09-02 11:24:41 · 7516 阅读 · 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 · 5527 阅读 · 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 · 1582 阅读 · 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 · 6824 阅读 · 0 评论 -
解决“_mkdir无法识别空格目录“问题
在C++编程里,有时候需要创建一个文件夹,通常使用库函数_mkdir(const char* dirname)来新建一个文件夹,该库函数每次只能创建一个文件夹,不能级联创建。若要级联创建文件,则请用递归方式或者for循环方式调用_mkdir()。空格的等效替换为\40.原创 2023-07-09 10:23:05 · 412 阅读 · 0 评论 -
C++常用的音频工具库
C++开源的音频库有很多,比如irrKang、YSE、FFmpeg、FMOD、BASS等,这些音频库有的是跨平台,有的是"个人使用免费,企业使用收费"的许可机制。了解这些库的特性,对于音视频业务的处理和迁移非常有帮助。原创 2022-10-19 23:56:47 · 8399 阅读 · 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 · 3552 阅读 · 0 评论 -
C++里sscanf()与swscanf()的使用
在C++中,常常需要对字符串进行分隔,可以使用string里的substring()+Find()的方式进行分隔,也可以使用sscanf、swscanf的方式进行分隔。可以看到substr()、sscanf()、swscanf()这3个库函数,在提取字符串方面是等价的。......原创 2022-08-27 11:21:50 · 1090 阅读 · 0 评论 -
将CString里的连续字符串压缩为一个
在做字符串解析时,有时候需要去掉字符串的首部、尾部空格,同时将中间连续的空格压缩为一个。在MFC中,借助CString的库函数TrimLeft()、TrimRight(),分别可以去掉首部、尾部的空格,对于中间的字符串空格,则需要手动编写函数来处理。比如,字符串A = " 100 300 500 888 666 ",要将字符串A的首部100前面的空格、尾部666后面的空格都去掉,同时,需要将子串“100 300”里中间的2个空格压缩为1个,"500 888"里中间的3个空格压缩为1个,并实现...原创 2022-08-14 09:55:28 · 432 阅读 · 0 评论 -
C++ 策略模式的具体案例与优缺点
策略模式:准备一组算法,并将每一个算法封装起来,使得它们可以互换。策略模式中的角色与职责,在策略模式中分为4个角色:环境类Context、具体环境类SubContext、策略类Stategy、具体策略类SubStrategy。 1) - Context(环境类):环境类是一个抽象类,它通过属性成员m_pStrategy调用具体策略类里的函数,以实现不同功能。2) -SubContext(具体环境类、子环境类):继承环境类Context,实现对某个对象或环境的描写。 ...............原创 2022-07-17 13:15:16 · 521 阅读 · 0 评论 -
解决“C2001:常量中有换行符“编译问题
用Virsual Studio编译代码时,有时会出现"C2001:常量中有换行符"问题,出现这种现象的原因是当前编码是"UTF-8不带BOM",要改成"UTF-8带BOM"类型才编译OK。点击VS菜单栏上的【文件】–》高级 --》选中"UTF-8 带BOM" --》OK,如图(1)、图(2)所示。 这里介绍一个批量给UTF-8源代码,添加BOM的工具:UltraCodingSwitch.exe,比如,要source\i18n\文件夹下的*.cpp、*.h文件,都加上BOM。 ......原创 2022-07-03 23:55:28 · 4054 阅读 · 1 评论 -
使用vscode查看Hex或UTF-8编码
vscode是一个跨平台、支持多种语言、插件非常的IDE,用它来查看源代码、查看文件的hex或UTF-8编码,非常方便。这里推荐vscode里查看hex或UTF-8的插件:Hex Editor,具体如下。 打开vscode,点击左侧的田字图标 --》在"扩展商店"里,输入 hex,选中Hex Editor —> 安装即可。 将要查看的文件,拖入vscode,比如将hello.txt 拖入vscode --> 在vscode的Tab页里右击hello.txt --> 重新打开编辑器的方式.原创 2022-07-03 09:04:32 · 10878 阅读 · 0 评论 -
Visual Studio版本号、MSVC版本、工具集版本号
微软从1998年发布Visual C++ 6.0以来,以每2年一个IDE的速度发布新的开发平台,下面介绍历史上各个VS的版本。从VC60、VS2002一直到VS2022,大约12个版本的IDE与C++编译器。原创 2021-06-12 16:08:55 · 17807 阅读 · 0 评论 -
用VScode绘制函数调用流程图
在C++编程中有时候需要画出多个class类之间的调用关系,可以使用Visio画UML类图来实现,也可以使用VScode的函数头+箭头来实现。这里介绍使用VScode里的函数头+箭头来绘制调用流程图。原创 2022-05-28 08:56:15 · 22876 阅读 · 1 评论 -
在Visual Studio里设置VA助手(VAssistX)的快捷键
VAssistX是一个非常方便的Visual Studio软件助手,可以进行代码提示、代码自动完成、代码注释、代码自动定义等等。这里以用VAssistX里设置函数体为例,进行说明。 点击VS工具栏上的[工具] --》选项 --》环境/键盘 --》在“显示命令包含”里,输入: createImple --> 选中 VAssistX.RefactorCreateImplementaion --> 按Alt+Q --》分配 --》OK, 如图(1)所示:图(1) 在Visua原创 2022-05-23 16:40:45 · 2313 阅读 · 0 评论 -
解决“VS 报No such file or directory“问题
今天在使用VS2015的calcOne工程,将工程由Debug版本改为Release版本,编译时弹出"无法打开包括文件: 'addFunc.h': No such file or directory"错误,如图(1)所示:但是,将工程由Release版本改回到Debug版本,却编译成功。从而判断是Release、Debug这2个版本的编译环境有差异。...原创 2022-05-17 09:10:57 · 19769 阅读 · 0 评论 -
C++基本数据类型的字节数、范围大小、溢出处理
C++有几种基本的数据类型:char、int、float、double,这些数据类型的字节数、范围大小根据操作系统、编译器的不同而不同。- 在Windows上,同一种数据类型,其win32与win64的字节数是一致的;比如,int在win32、win64都是4个字节。- 在Linux上,大部分数据类型,其32位与64位的字节数是一致的;只有long类型的不相同。比如,float在32位、64位的Linux上,都是4个字节。...........................原创 2022-05-11 12:35:46 · 6727 阅读 · 0 评论 -
解决“‘inet_addr‘: Use inet_pton() or InetPton() instead “问题
今天在使用Windows Socket C++编程时,弹出"‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS"问题,如图(1)所示:图(1) Socket2报兼容性错误 问题原因:socket2已经丢弃inet_ntoa()、inet_addr()这些老版本函数,当在Socket2上调用这些老版本(Socket1版本)函数时,warning变成er原创 2022-05-08 08:44:17 · 6701 阅读 · 1 评论 -
解决“const char[]类型没有+操作符“问题
MFC的Unicode字符集对(const char A + "") 字符串的+加号重载功能,不稳定,改用str.Format("%s%s", strA,strB)来实现2个字符串之间的连接。原创 2022-05-02 21:38:00 · 568 阅读 · 0 评论