C/C++
文章平均质量分 92
一路初心向前
这个作者很懒,什么都没留下…
展开
-
使用Visual Studio 2015编译protobuf
下载源码笔者使用的protobuf版本是protobuf-cpp-3.0.0-alpha-1。下载链接https://github-production-release-asset-2e65be.s3.amazonaws.com/23357588/d783a8d4-7fcb-11e4-9260-069534592d92?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210125%2Fus-原创 2021-01-25 23:00:57 · 674 阅读 · 0 评论 -
关于使用Vistual Studio编写C/C++工程的一些总结
关于工程属性的一些基本配置右键点击项目。选择属性。即可打开工程的属性界面。输出目录的配置在项目属性界面–>配置属性–>常规–>输出目录。此目录可以指定exe或者dll等生成文件的目录。调试的配置在项目属性界面–>配置属性–>常规–>调试–>调试环境。此项会在程序启动运行的时候自动从此目录中加载程序所需要的.dll文件。这样的话就不用拷贝从其他目录拷贝dll到exe文件所在目录了。省事了很多包含目录和库目录的配置包含目录用来配置头文件所在的目录。原创 2020-12-27 19:01:42 · 338 阅读 · 1 评论 -
提高C++性能的编程技术
第二章 构造函数和析构函数继承当一个对象确实被需要的时候才创建它。对象的创建(或销毁)触发对父对象和成员对象的递归创建(销毁)。要当心复杂层次中对象的复合使用。它们使得创建和销毁的开销更为高昂。初始化成员变量使用显式构造。class FTest{public: FTest(const std::wstring &str) :_str(str)//建议 { // _str = str;//不建议 } private: std::wstring _原创 2020-08-04 22:52:45 · 673 阅读 · 0 评论 -
深入应用C++11——代码优化与工程实践
第一章 使用C++11让程序更加简洁、更现代可调用对象函数指针void functionPointer(){ std::cout << "functionPointer" << std::endl;}void(*func)(void) = &functionPointer;func();具有 operator() 成员函数的类对象(仿函数)class Test{public: void operator()(int a,int b) { st原创 2020-07-12 11:10:35 · 1364 阅读 · 1 评论 -
利用visual studio产生dump文件分析程序崩溃
pdb文件PDB文件是"程序数据库" Program DataBase的简称,包含的程序的代码信息通过此文件可以查看程序断点的位置以及函数运行堆栈等信息。dump文件dump文件全称是 附加堆栈信息的存储文件。 文件拓展名为 .dmp 通过dump文件可以得到程序运行某一时刻的堆栈信息。可用于在程序崩溃的时候,分析此刻的dmp文件来排查崩溃的原因VS中release配置生成pdb文件右键项目属性。连接器-----调试-----选择生成调试信息转储生成dmp文件(VS2015 32位原创 2020-07-05 10:15:51 · 5443 阅读 · 2 评论 -
Qt配置FFmpeg
**环境:windows7Qt:Based on Qt 5.12.4 (MSVC 2017, 64 bit)Qt Creator 4.9.2**FFmpeg:ffmpeg-4.2-win32-devffmpeg-4.2-win32-sharedffmpeg-4.2-win32-static安装:一。新建一个Qt工程二。在项目目录下新建一个ffmpeg文件夹三、将lib库...原创 2019-08-28 21:45:34 · 2197 阅读 · 1 评论 -
音视频编程之FFmpeg解码视频保存为图片
FFmpeg介绍FFmpeg基础结构原创 2020-06-26 21:06:34 · 1575 阅读 · 0 评论 -
C/C++总结
获取所在文件以及行号__LINE__ // 在源代码中插入当前源代码行号__FILE__ // 在源文件中插入当前源文件名__DATE__ // 在源文件中插入当前的编译日期__TIME__ // 在源文件中插入当前编译时间__STDC__ // 当要求程序严格遵循ANSI C标准时该标识被赋值为1__cplusplus // 当编写C++程序时该标识符被定义_WIN32 // 在程序运行在windows系统上被定义位1linux //原创 2020-06-14 10:57:34 · 890 阅读 · 0 评论 -
Qt获取本机IP地址的方法
使用Qt中的QHostInfo来获取本地IP地址 QString hostNme = QHostInfo::localHostName(); QHostInfo hostInfo = QHostInfo::fromName(hostNme); auto addList = hostInfo.addresses(); if (addList.isEmpty()) { Q_ASSERT(false); } for (int i = 0;i < addList.count();++i)原创 2020-05-31 09:14:09 · 5341 阅读 · 0 评论 -
Qt中的QLineEdit 取消右键菜单
QLineEdit *lineEdit = new QLineEdit;lineEdit->setContextMenuPolicy(Qt::NoContextMenu);原创 2020-05-18 15:30:14 · 3007 阅读 · 2 评论 -
Boost -----无法打开文件“libboost_thread-vc120-mt-gd-x32-1_73.lib
在配置好boost库了以后,运行一段boost多线程代码,提示如下错误无法打开文件“libboost_thread-vc120-mt-gd-x32-1_73.lib解决在C/C++ 代码生成里面多线程调试 DLL (/MDd)改为多线程调试 (/MTd)原创 2020-05-17 20:55:03 · 562 阅读 · 0 评论 -
Qt 创建后台系统托盘菜单
创建步骤创建 QSystemTrayIcon 对象创建 QMenu 对象创建具体的QAction对象,绑定相应的实现槽函数将QAction对象加入到 QMenu 对象中QSystemTrayIcon 对象设置相应的托盘图标或者ToolTips调用 QSystemTrayIcon 的 setContextMenu 设置QMenu调用 QSystemTrayIcon 的show 显示菜单即可代码示例_sysTray = QSharedPointer<QSystemTrayIcon>原创 2020-05-16 21:10:31 · 159 阅读 · 0 评论 -
Qt之最简单的日志系统
#include <QtWidgets/QApplication>#include <iostream>#include <windows.h>void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg){ QByt...原创 2020-04-08 20:36:02 · 541 阅读 · 0 评论 -
Qt之检测鼠标移动
需求在一个QWidget中,若是鼠标悬停3s以上,则需要弹出一个ToolTips来显示信息。思路描述重写 void mouseMoveEvent(QMouseEvent *event)函数,然后创建一个定时器,用来计算鼠标是否保持不动3s。创建一个int类型变量 _timeCount,增长范围为0-2。当触发mouseMoveEvent 函数的时候 _timeCount 变量就自减,定时...原创 2020-04-06 14:57:35 · 2556 阅读 · 0 评论 -
FFmpeg学习一
FFmpeg基础知识Qt的FFmpeg环境配置https://blog.csdn.net/weixin_39308337/article/details/100127079音视频基础知识视频编码通过特定的压缩技术,将某个视频格式文件转换成另一种视频格式文件的方式。帧率帧率(Frame Rate)是用于测量显示帧数的量度。测量单位为每一秒显示帧数。码率即比特率,比特率是单位时间播放...原创 2019-12-21 16:31:07 · 185 阅读 · 0 评论 -
Qt The process was ended forcefully.问题
在运行一个Qt项目时候,编译通过,运行的时候 提示 The process was ended forcefully。有可能是因为 缺少程序运行所需的dll文件。解决方法在生成的debug目录下运行程序对应的exe文件,查看缺少哪些dll文件,一 一拷贝过来即可。...原创 2019-12-14 22:27:27 · 3142 阅读 · 0 评论 -
QThread多线程使用记录
Qt多线程使用方式继承自QThread,重写 run函数。#ifndef QTHREADTEST_H#define QTHREADTEST_H#include <QObject>#include<QThread>class QThreadTest : public QThread{ Q_OBJECTpublic: QThreadTest(...原创 2019-11-24 14:06:21 · 128 阅读 · 0 评论 -
关于Qt自动补全,无法识别补全父类函数
问题:今天换了 Qt 5.12.4 + Qt Creator 4.9.2新版本 ,之前使用的是 Qt Creator4.3 + Qt 5.9系列在重载 QWidget里面的QPaintEvent函数的时候,发现Qt无法自自动补全识别,补全快捷键采用的 tab,tab 只要键入,可以自动识别出来,但是无法识别出此函数。解决方案: 点击 Qt Cceator 菜单栏的 帮助 再点击 关于插件...原创 2019-07-27 23:27:25 · 1260 阅读 · 3 评论 -
Qt之QTableWiget的基本用法总结
注意: QTableWiget 在使用前一定要设置行数以及列数 ( QTableWidget *tableWidget = new QTableWidget(15,5) 此种方法可不用)QStringList headList; headList<<"Test"<<"Value"; m_iRow = 5; m_iCol = headList.siz...原创 2019-07-01 21:09:43 · 2790 阅读 · 0 评论 -
C++之lambda表达式
定义C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类...原创 2020-08-18 09:20:14 · 159 阅读 · 0 评论 -
cjson库
json结构体解析##json是一种存储以及交换文本信息的语法。类似XML。答案是比 XML 更小、更快,更易解析。json的书写格式是 名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:例子:“firstName” : "John"json的值JSON 值可以是:**- 数字(整数或浮点数)字符串(在双引号中)逻辑值(true 或 false)数组...原创 2019-10-01 22:24:49 · 155 阅读 · 0 评论 -
Windows 7 安装 MySQL Connector/C++ 以及Boost 并且用VS2013进行配置
安装环境:系统 windows 7 IDE:vs2013MySQL版本: 5.6.26一、下载本人使用的下载链接是 https://www.cr173.com/soft/105990.htmlMySQL Connector/C++ 1.1.5 发布,此版本的二进制版本需要使用 Boost 1.54.0 编译。Boost库下载地址:https://www.boost.org/user...原创 2019-08-16 00:06:54 · 745 阅读 · 0 评论