自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++包管理工具:conan2交叉编译配置

Conan交叉编译配置指南:通过profile文件实现多平台支持 摘要: 本文介绍了如何使用Conan进行交叉编译开发,重点说明了profile文件的配置方法。首先介绍了如何查看和修改Conan的profile文件路径,并提供了一个典型的ARM平台交叉编译profile示例,包含编译器路径、系统根目录等关键设置。文章还列出了Conan 2.16.1版本的核心配置项和构建工具配置选项,包括缓存路径、下载设置、编译标志等参数,为开发者进行多平台编译提供了详细参考。通过合理配置这些参数,可以灵活实现不同目标平台的

2025-07-24 09:53:42 442

原创 如何安装CMake较新的版本

本文详细介绍了在不同操作系统上安装最新版CMake的多种方法。对于Linux系统,推荐通过Kitware官方仓库安装(自动更新依赖),也可选择预编译二进制包或源码编译安装。Windows用户可直接下载官方.msi安装包,macOS建议使用Homebrew安装。文章还提供了验证安装、处理多版本共存和权限问题的注意事项。建议Linux优先使用Kitware仓库,Windows/macOS使用官方安装包,安装后通过cmake --version确认版本。

2025-07-22 22:18:30 249

原创 一站式现代 C++ 项目开源工具集锦

本文整理了现代C++项目开发中的高质量开源库,涵盖并发队列、线程池、命令行解析、单元测试、网络编程、日志系统、配置文件解析、序列化和进程间通信等核心模块。推荐的库如concurrentqueue、CTPL、argparse、spdlog、nlohmann/json等都具有轻量、高性能、跨平台等特点,能显著提升开发效率和系统性能。文章建议按需组合这些组件,使用CMake构建和现代包管理工具,为项目现代化改造提供参考。这些活跃维护的开源库可帮助开发者避免重复造轮子,构建稳定可靠的C++应用。

2025-07-18 14:17:50 966

原创 替代标准库:实用 C++ 开源组件推荐

本文推荐了多个C++标准库组件的开源替代方案,适用于兼容老版本或跨平台项目。主要推荐包括:ghc::filesystem(文件系统)、tl::optional(可选值)、fmt(格式化)、date(日期处理)和tl::expected(错误处理)。这些库多为header-only实现,支持C++11及以上,与标准库高度兼容,便于后续迁移。文章还补充了类型反射、元编程等实用工具库,并建议通过包管理器集成。这些方案能帮助开发者在保持兼容性的同时,提前使用现代C++特性。

2025-07-18 14:10:37 464

原创 C++包管理工具:conan2常用命令详解

conan new 命令用于快速创建项目模板,支持多种预定义模板(如 CMake、Autotools 项目)和自定义 Jinja2 模板,可通过参数自定义包名、版本和依赖项。conan remove 命令用于删除本地缓存或远程仓库中的软件包,支持通过模式匹配删除特定版本或二进制包,提供确认选项、LRU清理和试运行模式,可从JSON列表批量删除。

2025-07-11 17:13:00 868

原创 使用Kahn算法处理节点依赖关系

本文介绍了基于Kahn算法的拓扑排序实现,用于解决插件开发中的依赖顺序问题。算法采用unordered_map<string, set<string>>表示节点依赖关系,通过构建邻接表和入度表实现排序。关键步骤包括:初始化数据结构、队列处理零入度节点、动态更新子节点入度,以及环检测。文章提供了完整的C++代码示例,并总结了接口设计要点,包括输入格式、邻接表、入度表等核心组件的作用和实现方式。最后提出并行化处理、动态更新支持和字典序输出等优化建议,平衡功能需求与性能考量。该实现能有效检

2025-07-05 17:44:51 815

原创 C++包管理工具:conan2持续集成 (CI) 教程

您可以将此列表视为“级别 (levels)”列表,在级别 0 中,有不依赖于任何正在构建的其他包的包,在级别 1 中有仅依赖于级别 0 中的元素的包,依此类推。请注意,在此示例中,我们为了方便使用 Debug 和 Release 作为不同的配置,但在实际情况中,这些将是不同的配置,例如 Windows/X86_64、Linux/x86_64、Linux/armv8 等,并在不同的计算机上运行。这并不总是可取的,甚至不可能,在许多情况下,更可取的是进行分布式构建,以实现更快的构建和更好地利用 CI 资源。

2025-06-28 11:24:52 1100

原创 C++包管理工具:conan2使用教程

摘要: 本节为Conan 2的实践教程,指导用户从零开始构建依赖zlib的C项目。主要内容包括: 基础使用:通过CMake项目示例演示如何通过conanfile.txt声明依赖,使用conan install下载/构建zlib,并集成到CMake构建流程中; 工具管理:利用tool_requires声明构建工具(如CMake 3.22.6),通过生成的环境脚本隔离工具链; 多配置支持:通过修改配置文件或命令行参数,切换Debug/Release构建类型及静态/动态链接方式; 高级特性:后续将介绍conanf

2025-06-25 20:45:14 758

原创 C++包管理工具:conan2介绍

摘要:Conan 是一个开源、去中心化的 C/C++ 包管理器,支持全平台(Windows/Linux/macOS等)和所有构建系统(CMake/Make/Visual Studio等)。其核心优势包括:1)完整的二进制管理,可创建多配置预编译包;2)私有仓库支持,通过Artifactory CE或内置服务器托管私有包;3)稳定兼容,承诺2.X版本无破坏性变更;4)活跃社区支持,包括8000+ GitHub星标和ConanCenter公共仓库。适用于嵌入式/移动/服务器等全场景开发,显著提升C/C++项目构

2025-06-25 20:39:48 1180

原创 深入浅出 libuv 的设计哲学与应用场景

libuv 是一个跨平台的异步 I/O 库,最初为 Node.js 开发,支持事件驱动的编程模型。它提供了对 I/O 轮询机制的高级抽象,包括句柄、流、文件 I/O 和线程功能。本文介绍了 libuv 的环境搭建步骤,包括克隆仓库、使用 CMake 构建和安装。此外,还提供了一个简单的 TCP 服务器示例,展示了如何使用 libuv 处理客户端连接、读取数据和回显消息。通过事件循环和回调机制,libuv 能够高效地管理异步操作,适用于高性能的网络应用开发。

2025-05-16 10:20:00 122

原创 Poco C++全面开发指南:网络应用开发

基于Poco库的网络应用开发

2025-04-30 16:54:02 313

原创 Poco C++全面开发指南:日期和时间

Poco日期和时间表示与操作。

2025-04-29 10:24:29 220

原创 Poco C++全面开发指南:开发环境搭建

POCO(全称POrtable COmponents)是由Applied Informatics Software Engineering开发的开源C++库,是一组开源C++类库集合,它的设计理念是“简单易用”和“模块化”,让我们能够快速构建高性能的应用程序,特别是以网络为中心的可移植跨平台应用程序。这些库与C++标准库完美集成,填补了其留下的许多功能空白。

2025-04-28 09:25:31 291

原创 关于日期的一些计算

编程和日常生活中的日期计算。

2025-04-23 16:07:58 421

原创 Fast DDS快速上手:编写一个简单的C++发布者和订阅者应用

本节详细说明了如何通过C++ API分步创建一个包含发布者(publisher)和订阅者(subscriber)的简单Fast DDS应用程序。

2025-04-20 12:41:47 397

原创 解锁C++ gRPC:快速入门指南

gRPC(gRPC Remote Procedure Calls)是一种现代远程过程调用(RPC)框架,支持客户端与服务器应用之间的高效通信。

2025-04-18 16:46:23 461

原创 在 Windows 平台构建使用ZeroMQ

ZeroMQ是一个高性能的异步消息库,常用于分布式系统或网络通信。我们在C++编程时可以使用ZeroMQ 的 C++ 绑定库cppzmq开发需要消息传递功能的应用程序,cppzmq是ZeroMQ的C++绑定,允许在C++项目中使用ZeroMQ的功能。

2025-04-18 11:04:08 503

原创 字节流与十六进制字符串的相互转化

字节流与十六进制字符串的相互转化。

2025-03-28 10:06:13 293

原创 什么是base64

Base64是一种用64个字符来表示二进制数据的方法

2025-03-28 00:03:22 368

原创 查找 std::bitset 中第一个和最后一个位置

查找 std::bitset 中第一个和最后一个元素

2025-03-26 11:10:43 224

原创 位旋转操作实现

实现用于位操作相关的函数,目的是实现跨平台的位旋转操作,且能兼容有符号和无符号类型。

2025-03-26 10:59:50 127

原创 Snowflake 算法的实现

snowflake 算法的核心思想是使用 41bit 作为毫秒数,10bit 作为机器的 ID(比如其中 5 个 bit 可作为数据中心,5 个 bit 作为机器 ID),12bit 作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是 0。单机上 ID 单调自增,毫秒数在高位,自增序列在低位,整个 ID 是趋势递增的。ID 可能不是全局递增,虽然 ID 在单机上是递增的,但是由于涉及到分布式环境下的每个机器节点上的时钟,可能会出现不是全局递增的场景。

2025-03-25 11:11:40 310

原创 windows下编译paho.mqtt

paho.mqtt 在windows环境下的编译过程记录

2025-03-14 14:21:26 527

原创 时间字符串的格式化输出

时间字符串的格式化输出。

2025-03-14 14:16:57 252

原创 HowardHinnant/date的简单使用

date是一个时间日期库,用于补充std::chrono的一些功能

2025-03-14 09:52:18 271

原创 整数与字节序列相互转换

函数是用于二进制编解码的核心工具函数,实现 32/64 位整数与字节流之间的高效转换。

2025-03-13 19:37:05 292

原创 Stopwatch的简单实现

Stopwatch 是一个简单计时器类,用来测量代码的执行时间。它可以用来跟踪某个任务或一系列任务的执行时间,常用于性能调优或监控任务的耗时。C++ 中的 库提供了一种高精度且类型安全的方式来处理时间。

2025-02-28 14:57:20 235

原创 ScopeGuard的简单实现

ScopeGuard 提供一个局部作用域的守护函数, 当ScopeGuard生命结束时自动执行预设的守护函数,类似于std::lock_guard<>对于std::mutex的处理。

2025-02-27 14:50:47 191

原创 oneTBB的编译使用

oneAPI Threading Building Blocks(oneTBB)是一个支持使用标准ISO C++代码进行可扩展并行编程的库。

2024-12-26 11:04:53 479

原创 嵌入式系统中文件传输模块的设计

本文设计了主从设备间的双向文件传输协议,包含两种流程模式:1)主设备发起传输(文件上传)和2)从设备发起传输(文件下载)。两种模式均采用握手-数据传输-校验的三阶段流程,但数据结构存在差异:上传时主设备发送文件大小,下载时由主设备返回文件大小;数据传输包结构也互为镜像。协议定义了包括文件模块标识、分片大小、数据偏移等关键字段,并使用16字节校验数据确保完整性。流程图清晰展示了两种模式下的交互时序,为嵌入式系统文件传输提供了标准化解决方案。

2024-08-27 16:00:23 735

原创 ROS常用消息之Odometry

nav_msgs/Odometry Message

2024-08-26 17:04:07 545

原创 ROS常用消息之Imu

sensor_msgs/Imu Message

2024-08-26 15:06:51 372

原创 ROS常用消息之Image

sensor_msgs/Image Message

2024-08-22 10:42:06 318

原创 ROS常用消息之LaserScan

sensor_msgs/LaserScan Message

2024-08-22 10:30:19 303

原创 protobuf库的安装使用

执行完上面的命令后,在当前文件夹中生成了protobuf.sln,打开后即可编译,或者使用以下命令构建。

2024-08-08 15:46:33 163

原创 mosquitto安装后的配置

配置mosquitto服务,允许远端访问

2024-08-02 16:14:03 611

原创 编译安装mosquitto过程记录

编译安装MQTT服务

2024-08-02 11:10:10 326

原创 日志库spdlog的使用

spdlog的简单使用

2024-08-01 10:21:33 534

原创 字符串操作函数的一些补充

字符串操作函数的一些补充。

2024-07-31 17:42:34 190

原创 统计函数运行耗时

首先我们需要实现一个计时器类,类似于体育竞赛裁判手上的秒表。

2024-07-30 17:25:37 314

读取Tiff文件中CMYK色彩模式存储的图像数据,并转换为RGB色彩模式

读取Tiff文件中CMYK色彩模式存储的图像数据,并转换为RGB色彩模式

2017-07-04

C++用C#封装的COM组件的方式调用SapRfc函数

网上找的C++调用SAP RFC的sapnwrfc方式过于麻烦且容易造成内存泄漏,所以自己封装了个COM组件,基于SAP_DotNetConnector3,以此来调用SAP函数

2018-06-11

HansTool.rar

Qt 编写的串口调试助手(使用QSerialPort类),实现发送/接收数据,清空显示等功能,代码简洁,清晰,容易理解

2020-12-01

xlslib-package-2.5.0 vs2008编译版

之前下载的xlslib编译不通过,经过一些修改后成功在vs 2008下编译通过

2018-06-11

空空如也

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

TA关注的人

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