CPP
文章平均质量分 51
zhexiao27
Keep going.
展开
-
C++ 自定义日志函数打印日志
【代码】C++ 自定义日志函数打印日志。原创 2024-07-25 20:19:48 · 103 阅读 · 0 评论 -
JNA、JNI、原生C++函数调用效率及测试过程
6.将生成的DLL及依赖的算法DLL复制到jdk/bin目录下。1.Visual Studio配置头文件及lib库文件的路径。7.java调用JNI函数执行DLL方法。2.生成.h头文件,用于包装C++方法。3.通过Clion封装C++函数。拷贝.h文件,并创建cpp文件。1.构建DLL Library。配置cmakelist文件。5.构建项目,会生成DLL。3.调用函数计算时长。原创 2024-04-09 10:45:06 · 691 阅读 · 0 评论 -
Qt 运行一个实例进程
逻辑:首先一个新的实例启动时,将尝试连接到同一个本地服务器,如果连接失败,则表示第一个实例进程,创建一个本地服务器;否则,拉起已打开的实例进程。原创 2024-03-04 10:51:21 · 438 阅读 · 0 评论 -
QT集成Protobuf
1.定义protobuf2.通过protoc.exe编译proto文件。原创 2024-02-29 16:19:03 · 704 阅读 · 0 评论 -
C++ 11 fopen 支持打开带中文的路径
【代码】C++ 11 fopen 支持打开带中文的路径。原创 2024-01-04 16:45:59 · 1336 阅读 · 0 评论 -
cmake多模块架构, DLL依赖编译
然后通过add_custom_command进行拷贝dll到生成路径。主要通过设置环境变量定义具体路径。原创 2023-12-15 17:44:10 · 269 阅读 · 0 评论 -
cmake通过add_custom_command复制DLL及配置文件
【代码】cmake通过add_custom_command复制DLL及配置文件。原创 2023-12-09 11:31:26 · 643 阅读 · 0 评论 -
Clion运行QT,模拟VS弹出CMD框打印
参考:https://stackoverflow.com/questions/35385772/running-clion-on-the-system-console-like-visual-studio。原创 2023-12-06 16:48:22 · 167 阅读 · 0 评论 -
QThread之moveToThread用法
使用moveToThread函数的流程如下:1、创建一个类继承自QObject类或其子类,并在其中定义所要执行的多个任务,执行多个任务就要定义相应的信号。2、任务通过moveToThread指定所要执行的线程。3、线程通过start启动4、通过信号与槽机制触发线程的执行。原创 2023-12-05 16:01:33 · 268 阅读 · 0 评论 -
采用connector-c++ 8.0操作数据库
把D:\Library\mysql-connector-c+±8.2.0-winx64\lib64\debug中的mysqlcppconn-9-vs14.dll复制到项目的可执行目录下。https://dev.mysql.com/downloads/connector/cpp/,下载带debug的库。2.在cmakelist中定义寻址头文件的路径与库的路径。1.下载最新的Connector。3.复制对应的DLL到可执行目录。原创 2023-11-22 19:43:21 · 1189 阅读 · 0 评论 -
编译QT Mysql库并集成使用
进入文件夹D:\Library\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common,打开msvc-version.conf文件,添加。检查mingw73_64/plugins/sqldrivers目录下是否存在qsqlmysql.dll文件,没有就需要编译mysql驱动。一定要复制到mysql对应位数的编译器中,然后在构建的时候,注意选择需要生成的应用是32位还是64位。7.将文件复制到编译器的5.14.2\msvc2017_64\plugins\sqldrivers中。原创 2023-11-22 19:41:59 · 570 阅读 · 0 评论 -
QT串口通信 基础使用
由于需要使用QT的信号槽,所以Q_OBJECT文件需要额外进行MOC编译,把对应的头文件指明到executable中。使用QT的SerialPort,需要加装对应的依赖。原创 2023-11-08 16:27:38 · 119 阅读 · 0 评论 -
日志记录库 spdlog 基础使用
配置特别简单,仅包含头文件即可;写日志方式简单明了;可实现自动按日期创建日志文件/定时创建日志文件;可自定义日志格式;可以输出当前输出日志所在的文件及函数;可自定义文档大小;可将不同级别的信息输出到不同日志文件;多平台等。*_st:单线程版本,不用加锁,效率更高。*_mt:多线程版本,用于多线程程序是线程安全的。日志记录槽sinkset_pattern(const std::string&):设置日志输出的内容格式。原创 2023-11-01 15:17:16 · 1219 阅读 · 0 评论 -
内存对齐详解
假如没有内存对齐机制,数据可以任意存放,现在一个int变量存放在从地址1开始的联系四个字节地址中,该处理器去取数据时,要先从0地址开始读取第一个4字节块,剔除不想要的字节(0地址),然后从地址4开始读取下一个4字节块,同样剔除不要的数据(5,6,7地址),最后留下的两块数据合并放入寄存器.这需要做很多工作。**考虑4字节存取粒度的处理器取int类型变量(32位系统),该处理器只能从地址为4的倍数的内存开始读取数据。现在有了内存对齐的,int类型数据只能存放在按照对齐规则的内存中,比如说0地址开始的内存。原创 2022-10-22 10:37:20 · 959 阅读 · 0 评论 -
static_cast和dynamic_cast的区别
static_cast//用法:static_cast < type-id > ( exdivssion ) 该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。②用于基本数据类型之间的转换,如把int转换成char,原创 2022-05-30 17:37:28 · 4869 阅读 · 0 评论