[C++]库使用笔记

命令行解析

Chapter 29. Boost.Program_options - 1.80.0

词法分析器

Lex - Writing Lexical Analyzers - 1.80.0

格式化字符串

fmtlib/fmt: A modern formatting library
std::format - cppreference.com

IPC:共享内存等

Chapter 16. Boost.Interprocess - 1.80.0

可能用到的宏

  1. BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
  2. BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
  3. BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS

使用组合

启用宏(方式1,通过共享内存实现同步设施):

#BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS=1000

或(方式2,通过系统API实现同步设施):

BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
#BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
#BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS=1000

建议采用方式2下的boost::interprocess::interprocess_*windows_shared_memory等API。

遇到的情况

  1. 方式2下通过named_mutex使用对WindowsAPI封装的条件变量不起作用
    • 不知道为什么
  2. 方式1下OwerDeadLock需要通过超时时间模拟
  3. 方式1下创建named_*对象有时(比如删除大量文件时)会巨慢(存在文件系统相关调用)

加载动态库

Chapter 12. Boost.DLL - 1.80.0

获取进程路径:boost::dll::program_location

获取当前代码动态库路径:boost::dll::this_line_location

进程管理

获取进程ID、环境变量

boost::this_process

创建子进程

Chapter 28. Boost.Process - 1.80.0
配置项:boost::process::windows::show

demangle

UnDecorateSymbolName 函数 (dbghelp.h) - Win32 apps | Microsoft Learn
demangle - 1.80.0

字符串分割等

Chapter 2. Boost String Algorithms Library - 1.80.0

时间与日期

Chapter 11. Boost.Date_Time - 1.80.0

字符串转数字

Chapter 19. Boost.Lexical_Cast 1.0 - 1.80.0

boost::conversion::try_lexical_convert

日志库

Chapter 1. Boost.Log v2 - 1.80.0

GUI

Qt Documentation | Modules

图像处理

Home - OpenCV

C函数动态调用

dyncall.org - calling C functions dynamically

通信模型

ZeroMQ
zeromq/cppzmq: Header-only C++ binding for libzmq

常见错误:EFSM

数据交换

Protocol Buffers | Google Developers

Any可以用来做动态类型,里面有个type_url可以用来区分类型(注意它有前缀)。

stream

Boost.Iostreams

JSON

nlohmann/json: JSON for Modern C++
迫不得已,考虑编码问题:
Boost.JSON - 1.80.0

备选

GitHub - pocoproject/poco: The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
GitHub - facebook/folly: An open-source C++ library developed and used at Facebook.
GitHub - abseil/abseil-cpp: Abseil Common Libraries (C++)
GitHub - google/breakpad: Mirror of Google Breakpad project

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值