超级有用的c++库

标准库

C++ 标准库——包括 STL Containers、STL Algorithm、STL Functional等。

  • C++ 标准库- 类和函数的集合,它们是用核心语言编写的,也是 C++ ISO 标准本身的一部分。

  • 标准模板库- 标准模板库 (STL)。

  • C POSIX library - POSIX 系统的 C 标准库规范。

  • ISO C++ 标准委员会- ISO/IEC JTC1/SC22/WG21 - C++ 标准委员会。网站

  • GNU C 库- 本手册的目的是告诉您如何使用 GNU C 库的工具。

构架

C++ 通用框架和库。

  • abseil-cpp - Abseil C++ 公共库。[阿帕奇2]

  • Apache C++ 标准库- STDCXX,算法、容器、迭代器和其他基本组件的集合。[退休] [Apache2]

  • APR - Apache 便携式运行时。另一个跨平台实用功能库。[阿帕奇2]

  • ASL - Adobe Source Libraries 提供经过同行评审和可移植的 C++ 源库。[麻省理工学院]

  • 促进 ⚡- 大量通用 C++ 库。[提升]网站

  • BDE - 来自彭博实验室的 BDE 开发环境。[阿帕奇2]

  • C++ Workflow - C++ 并行计算和异步网络引擎。[阿帕奇2]

  • Cinder - 一个社区开发的免费开源库,用于专业品质的创意编码。[BSD]

  • cocoyaxi - C++ 库的集合,包含 go 风格的协程库、日志、JSON、RPC 框架和其他基础组件。[麻省理工学院]

  • Cxxomfort - 一个小型的,仅包含标头的库,可将各种工具从最新的 C++ 标准向后移植到 C++03 及更高版本。[麻省理工学院]

  • 数据库 ⚡- 在 C++ [Boost]网站中制作真实世界机器学习和数据分析应用程序的工具包。

  • EASTL - 电子艺术标准模板库。[BSD]

  • ETL - 嵌入式模板库。[麻省理工学院]

  • ffead-cpp - 企业应用程序开发框架。[阿帕奇2]

  • Folly - Facebook 开发和使用的开源 C++ 库。[阿帕奇2]

  • FunctionalPlus - C++ 的函数式编程库。编写简洁易读的 C++ 代码。[麻省理工学院]

  • GLib -GLib 为用 C 编写的库和应用程序提供核心应用程序构建块。 [LGPL]

  • JUCE - 一个包罗万象的 C++ 类库,用于开发跨平台软件。[Core-Module: ISC, Rest: GPL2/GPL3/Commercial]网站

  • Kigs framework - 一个免费和开源的 C++ 模块化多用途跨平台 RAD 框架。[麻省理工学院]网站

  • libPhenom -libPhenom 是一个事件框架,用于在 C 中构建高性能和高可扩展性系统。[Apache2]

  • LibSourcey - 用于实时视频流和高性能网络应用程序的 C++11 事件 IO. [LGPL]

  • LibU - 用 C 编写的多平台实用程序库。 [BSD]

  • Loki - 一个 C++ 设计库,包含常见设计模式和惯用语的灵活实现。[麻省理工学院]

  • MiLi - 仅包含最小标头的 C++ 库。[促进]

  • OpenFrameworks - 用于 C++ 创意编码的跨平台开源工具包。[麻省理工学院]网站

  • Qt ⚡- 一个跨平台的应用程序和 UI 框架。[GPL/LGPL/商业]

  • Reason - 一个跨平台框架,旨在为需要 C++ 性能和强度的开发人员带来 Java、.Net 或 Python 的易用性。[GPL2]

  • ROOT - 一组 OO 框架,具有以非常有效的方式处理和分析大量数据所需的所有功能。在欧洲核子研究中心使用。[LGPL]

  • Seastar - 一个先进的开源 C++ 框架,用于现代硬件上的高性能服务器应用程序。[Apache-2.0 许可证] seastar.io

  • STLport - STL 的示例版本。[自由]

  • STXXL - 超大数据集的标准模板库。[促进]

  • tbox - 一个类似 glib 的多平台 c 库。[Apache2]网站

  • Ultimate++ - C++ 跨平台快速应用程序开发框架。[BSD]

  • uSTL - 小型 STL 库。[麻省理工学院]

  • Windows 模板库- 用于开发 Windows 应用程序和 UI 组件的 C++ 库。[民众]

  • Yomm2 - 快速、正交、开放的多方法。取代Yomm11 [增强]

人工智能

  • ANNetGPGPU - 基于 GPU (CUDA) 的人工神经网络库。[LGPL]

  • btsk - 游戏行为树入门套件。[zlib]

  • Evolving Objects - 基于模板的 ANSI-C++ 进化计算库,可帮助您快速编写自己的随机优化算法。[LGPL]

  • frugally-deep - 仅用于在 C++ 中使用 Keras 模型的标头库。[麻省理工学院]

  • Genann - C 中的简单神经网络库。[zlib]

  • MXNet - 轻量级、便携、灵活的分布式/移动深度学习,具有动态、突变感知的数据流 Dep 调度器;适用于 Python、R、Julia、Scala、Go、Javascript 等网站。

  • PyTorch - Python 中的张量和动态神经网络,具有强大的 GPU 加速功能。网站

  • flashlight - Flashlight 是一个快速、灵活的机器学习库,完全用 C++ 编写。[BSD]

  • Recast/Detour - (3D) 导航网格生成器和路径查找器,主要用于游戏。[zlib]

  • TensorFlow - 使用数据流图进行数值计算的开源软件库。[Apache]

  • oneDNN - 用于深度学习应用程序的开源跨平台性能库。[阿帕奇]网站

  • CNTK - Microsoft Cognitive Toolkit (CNTK),一个开源的深度学习工具包。[促进]

  • tiny-dnn - C ++ 11 中的仅标头,无依赖的深度学习框架。[BSD]

  • Veles - 用于快速深度学习应用程序开发的分布式平台。[阿帕奇]

  • Kaldi - 语音识别工具包。[阿帕奇]

异步事件循环

  • Asio - 一个用于网络和低级 I/O 编程的跨平台 C++ 库,它使用现代 C++ 方法为开发人员提供一致的异步模型。[提升]网站

  • Boost.Asio - 用于网络和低级 I/O 编程的跨平台 C++ 库。[促进]

  • C++ Actor Framework - C++ 中 Actor 模型的开源实现。[BSD-3-Clause]网站

  • Ichor - 一个专注于线程安全并提供依赖注入的事件队列。[麻省理工学院]

  • libev - 一个功能齐全的高性能事件循环,它在 libevent 之后松散地建模,但没有它的限制和错误。[BSD 和 GPL]

  • libevent - 一个事件通知库。[BSD]

  • libhv - 跨平台事件循环库。[BSD]

  • libuv - 跨平台异步 I/O。[BSD]

  • promise-cpp - 实现 Promise/A+ 标准的仅标头库。【反996】

  • uvw - libuv 的 C++ 包装器。[麻省理工学院]

声音的

音频、声音、音乐、数字化语音库

  • AudioFile - 一个用于读取和写入音频文件的简单 C++ 库。[GPL3]

  • dr_libs - C 和 C++ 的单文件音频解码库。[许可]

  • FMOD - 一个易于使用的跨平台音频引擎和游戏音频内容创建工具。[非商业/商业免费]

  • KFR - 快速、现代的 C++ DSP 框架、FFT、FIR/IIR 滤波器、采样率转换。[GPL/商业]

  • LAME - LAME 是一种高质量的 MPEG Audio Layer III (MP3) 编码器。[LGPL]

  • libsndfile - 带有 C++ 包装器的 C 库,用于通过一个标准库接口读取和写入包含采样声音的文件。[LGPL-2.1]网站

  • libsoundio - 用于跨平台实时音频输入和输出的 C 库。[麻省理工学院]网站

  • Maximilian - C++ 音频和音乐 DSP 库。[麻省理工学院]

  • OpenAL - 开放音频库 - 跨平台音频 API。[BSD/LGPL/商业]

  • miniaudio - 单文件音频播放和捕获库。[授权]网站

  • ni-media - 用于读取和写入音频文件的 C++ 库。[麻省理工学院]

  • Opus - 一个完全开放、免版税、用途广泛的音频编解码器。[BSD]

  • PortAudio - PortAudio 是一个免费、跨平台、开源的音频 I/O 库。[麻省理工学院]

  • SELA - 简单的无损音频。[麻省理工学院]

  • SoLoud - 简单、便携的游戏音频引擎。[zlib]

  • Speex - 用于言论自由的免费编解码器。被 Opus 淘汰。[BSD]

  • Tonic - C++ 中简单高效的音频合成。[许可]

  • Vorbis - Ogg Vorbis 是一种完全开放、非专有、无专利和免版税的通用压缩音频格式。[BSD]

  • minimp3 - 公共领域,仅标头 MP3 解码器,具有洁净室实现。[CC0]

  • Verovio - Verovio 是一个快速、轻量级的音乐符号雕刻库。[LGPL]网站

  • Wav2Letter++ - 公共领域,一个完全用 C++ 编写的快速开源语音处理工具包,并使用 ArrayFire 张量库和手电筒机器学习库来实现最高效率。[BSD]

生物学

生物信息学、基因组学、生物技术

  • BioC++ - 用于生物信息学的 C++ 计算库。[BSD]

  • Chaste - 一个开源 C++ 库,用于为生理学和生物学开发的数学模型的计算模拟。[BSD]

  • libsequence - 用于表示和分析群体遗传学数据的 C++ 库。[通用公共许可证]

  • SeqAn - 用于分析序列的算法和数据结构,重点是生物数据。[BSD/3-条款]

  • Vcflib - 用于解析和操作 VCF 文件的 C++ 库。[麻省理工学院]

  • Wham - 通过直接将关联测试应用于 BAM 文件来构建基因组中的结构变体 (SV)。[麻省理工学院]

BitTorrent

  • jech/dht -C 中的 BitTorrent DHT 库。[麻省理工学院]

  • libtorrent (aka libtorrent-rasterbar) - 一个高效的功能完整的 C++ bittorrent 实现。[BSD]

  • LibTorrent(又名 libtorrent-rakshasa)-BitTorrent 库。[通用公共许可证]

  • libutp - uTorrent 传输协议库。[麻省理工学院]

化学

化学、量子化学、固态化学/物理、地球化学、生物化学

  • d-SEAMS - 带有 Nix 的 C++ 和 Lua 中的分子动力学轨迹分析引擎。它是 Deferred Structural Elucidation Analysis for Molecular Simulations 的首字母缩写词。[GPL]网站

  • gromacs - 一种消息传递并行分子动力学实现。[GPL]网站

  • Reaktoro - 用于模拟化学反应系统的 C++ 和 Python 计算框架。[LGPL]网站

  • LAMMPS - 专注于材料建模的经典分子动力学代码。它是 Large-scale Atomic/Molecular Massively Parallel Simulator 的缩写。[GPL]网站

  • MADNESS - 用于科学模拟的多分辨率自适应数值环境。[GPL]网站

  • MPQC - 大规模并行量子化学程序 MPQC,使用与时间无关的薛定谔方程从第一原理计算原子和分子的性质。[GPL]网站

  • ORCA - 包含现代电子结构方法的从头算量子化学程序包。[学术]网站

  • Psi - 从头算计算化学包。[GPL]网站

命令行界面

控制台/终端用户界面、命令行界面

  • 啊!- 一个极简、无挫折、只有标题的参数处理程序。[BSD]

  • Taywee/args - 一个简单的仅标头 C++ 参数解析器库。[麻省理工学院]

  • Boost.Program_options - 通过命令行和配置文件等常规方法获取程序选项的库。[促进]

  • Clara - 用于 C++ 11 及更高版本的简单易用、可组合的命令行解析器。[BSL-1.0]

  • cli - 用于交互式命令行界面(Cisco 风格)的跨平台标头仅 C++14 库。[促进]

  • CLI11 - 仅标头单文件或多文件 C++11 库,用于简单和高级 CLI 解析。[BSD]

  • jarro2783/cxxopts - 轻量级 C++ 命令行选项解析器。[麻省理工学院]

  • docopt.cpp - 从 docstring 生成选项解析器的库。[麻省理工学院/助推器]

  • FINAL CUT - 使用基于文本的小部件创建终端应用程序的库。[LGPL]

  • gflags - C++ 的命令行标志模块。[BSD]

  • 指标- 现代 C++ 的活动指标。[麻省理工学院]

  • linenoise - readline 和 libedit 的小型独立替代品。[BSD-2-条款]

  • linenoise-ng - Linux、Windows 和 MacOS 的小型便携式 GNU readline 替代品,能够处理 UTF-8 字符。[BSD]

  • Lyra - 用于 C++ 11 及更高版本的简单易用、可组合的命令行解析器。[促进]

  • Ncurses - 终端用户界面。[麻省理工学院]

  • oof - 用于控制台输出的方便、高性能的 RGB 颜色和位置控制。[麻省理工学院]

  • PDCurses - 具有源代码和预编译库的公共领域诅咒库。[公共区域]

  • popl - 用于 C++ 11 及更高版本的单头模板化命令行参数和 ini 文件解析器。[麻省理工学院]

  • replxx - 支持 UTF-8、语法高亮、提示的 readline 和 libedit 替代品,适用于 Unix 和 Windows。[BSD]

  • 制表- 现代 C++ 的表格制作工具。[麻省理工学院]

  • TCLAP - 一个成熟、稳定且功能丰富的库,用于在 ANSI C++ 中定义和访问命令行参数。[麻省理工学院]

  • termbox - 用于编写基于文本的用户界面的 AC 库。[麻省理工学院]

  • cpp-terminal - 仅用于编写多平台终端应用程序的小型 C++ 库。[麻省理工学院]

  • FTXUI - C++ 功能终端用户界面。[麻省理工学院]

  • imtui - 即时模式基于文本的用户界面。[麻省理工学院]

压缩

压缩和归档库

  • bit7z - 一个 C++ 静态库,为 7-zip DLL 提供干净简单的接口。[GPLv2]

  • Brotli - Brotli 压缩格式。由谷歌开发。[麻省理工学院]

  • bzip2 - 免费提供的、无专利的、高质量的数据压缩器。[BSD]

  • FiniteStateEntropy - 新一代熵编解码器:有限状态熵和 Huff0。

  • PhysicsFS - 提供对各种档案的抽象访问的库。它旨在用于视频游戏,设计灵感来自 Quake 3 的文件子系统。[zlib]

  • KArchive - 用于创建、读取、写入和操作文件存档(如 zip 和 tar)的库。它还通过 QIODevice 的子类使用 gzip 等格式提供透明的数据压缩和解压缩。[LGPL]

  • libarchive - 多格式存档和压缩库。[新 BSD]网站

  • LZ4 - 极快压缩算法。[BSD]网站

  • LZFSE - LZFSE 压缩库和命令行工具。由苹果公司开发。

  • LZHAM - 无损数据压缩库,压缩率与 LZMA 相似,但解压缩速度更快。[BSD]

  • LZMA ⚡- 7z 格式的默认和通用压缩方法。[公共区域]

  • LZMAT - 一个非常快速的实时无损数据压缩库。[通用公共许可证]

  • miniz - 单个 C 源文件 Deflate/Inflate 压缩库,具有与 zlib 兼容的 API、ZIP 存档读取/写入、PNG 写入。[麻省理工学院]

  • Minizip - 带有最新错误修复的 Zlib,支持 PKWARE 磁盘跨越、AES 加密和 IO 缓冲. [zlib]

  • smaz - 小字符串压缩库。[BSD]

  • Snappy - 快速压缩器/解压缩器。[BSD]

  • ZLib - 一个非常紧凑的数据流压缩库。[zlib]

  • zlib-ng - 用于“下一代”系统的 zlib。通过一些严重的优化直接替换。[zlib]

  • zstd - Zstandard - 快速实时压缩算法。由 Facebook 开发。[BSD]

  • ZZIPlib - 提供对 ZIP 档案的读取访问。[MPL/LGPL]

并发

并发和多线程

  • alpaka - 用于并行内核加速的抽象库。[LGPLv3+]

  • ArrayFire - 一个通用的 GPU 库。[BSD]

  • Async++ - C++11 的轻量级并发框架,灵感来自 Microsoft PPL 库和 N3428 C++ 标准提案。[麻省理工学院]

  • Boost.Compute - 用于 OpenCL 的 C++ GPU 计算库。[促进]

  • Bolt - 针对 GPU 优化的 C++ 模板库。[阿帕奇2]

  • ck - 并发原语、安全内存回收机制和非阻塞数据结构。[BSD]

  • concurrentqueue - 用于 C++11 的快速多生产者、多消费者无锁并发队列。[BSD,升压]

  • Cpp-Taskflow - 具有任务依赖性的快速 C++ 并行编程。[麻省理工学院]

  • CUB - CUB 为 CUDA 编程模式的每一层提供最先进的、可重用的软件组件。[新 BSD]

  • cuda-api-wrappers - 用于 CUDA GPU 编程运行时 API 的轻量级现代 C++ 包装器。[BSD]

  • cupla - 通过 Alpaka 在 OpenMP、线程、TBB 上运行 CUDA/C++ 的 C++ API。[LGPLv3+]

  • C++React - C++11 的反应式编程库。[促进]

  • FiberTaskingLib - 基于任务的多线程库,支持具有任意依赖关系的任务图。[阿帕奇]

  • HPX - 用于任何规模的并行和分布式应用程序的通用 C++ 运行时系统。[促进]

  • Intel Games Task Scheduler - 专为满足游戏开发人员需求而设计的任务调度框架。[麻省理工学院]

  • Intel Parallel STL - C++11 及更高版本的 C++17 STL 的英特尔® 实施。[阿帕奇2]

  • 英特尔 TBB - 英特尔® 线程构建模块。[阿帕奇2]

  • junction - C++ 中的并发数据结构库。[BSD]

  • Kokkos - 用于并行执行和内存抽象的性能可移植编程模型。[BSD]

  • libcds - 并发数据结构的 C++ 库。[BSD]

  • Libclsph - 基于 OpenCL 的 GPU 加速 SPH 流体模拟库。[麻省理工学院]

  • libdill - 在 C 中引入结构化并发。 [麻省理工学院]

  • libdispatch - 由 Apple Inc. 开发的 Grand Central Dispatch (GCD) 是一种基于线程池模式的任务并行技术。libdispatch 是一个提供 GCD 服务实现的库。[Apache-2.0]网站

  • libmill - 在 C 中引入 Go 风格的并发。 [麻省理工学院]

  • marl -Marl 是用 C ++ 11 编写的混合线程/光纤任务调度程序。 [Apache-2.0]

  • moderngpu -moderngpu 是一个用于在 GPU 上进行通用计算的生产力库。它是为 CUDA 编写的仅包含头文件的 C++ 库。该库的独特价值在于其用于解决不规则并行问题的加速原语。[FreeBSD 和版权,肖恩·巴克斯特]

  • NCCL - 用于集体多 GPU 通信的优化原语。[BSD]

  • OpenCL - 异构系统并行编程的开放标准。

  • OpenMP - OpenMP API。

  • 转子- 事件循环友好的 C++ 演员微框架。[麻省理工学院]

  • SObjectizer - 在一个相当小的 C++ 框架中实现 Actor、Publish-Subscribe 和 CSP 模型。[BSD-3-条款]

  • Quantum - 建立在boost::coroutines2之上的强大的 C++ 协程调度程序框架。

  • RaftLib - RaftLib C++ 库,通过类似 C++ iostream 的运算符 [Apache2] 实现流/数据流并发。

  • readerwriterqueue - 用于 C++ 的快速单生产者、单消费者无锁队列。[BSD]

  • stdgpu - GPU 上高效的类似 STL 的数据结构。[阿帕奇2]

  • Thrust - 类似于 C++ 标准模板库 (STL) 的并行算法库。[阿帕奇2]

  • transwarp - 用于任务并发的仅头文件 C++ 库。[麻省理工学院]

  • VexCL - 用于 OpenCL/CUDA 的 C++ 矢量表达式模板库。[麻省理工学院]

  • STAPL - 一种 C++ 并行编程框架,设计用于在共享和分布式内存并行计算机上工作。[BSD]

  • concurrencpp - 一个通用并发库,包含任务、执行器、计时器和 C++20 协程来统治它们。

配置

配置文件、INI 文件

  • inifile-cpp - 用于 C++ 的仅标头且易于使用的 Ini 文件解析器。[麻省理工学院]

  • inih - C 中的简单 .INI 文件解析器,适用于嵌入式系统。[BSD-3-条款]

  • inih - 仅单头 C++ 版本的inih。[BSD-3-条款]

  • iniparser -INI文件解析器。[麻省理工学院]

  • libconfig - 用于处理结构化配置文件的 C、C++ 库。[LGPL-2.1]网站

  • libconfuse - C 的小型配置文件解析器库。[ISC]

  • simpleini - 跨平台 C++ 库,提供简单的 API 来读取和写入 INI 样式的配置文件。[麻省理工学院]

  • toml++ - C++17 及更高版本的仅标头 TOML 解析器和序列化器。[麻省理工学院]网站

容器

  • C++ B-tree - 一个基于 B-tree 数据结构实现有序内存容器的模板库。[阿帕奇2]

  • Colony - 一种无序的“袋子”型容器,在高度修改场景中优于标准容器,同时保持指向非擦除元素的永久指针,无论插入/擦除如何。[zLib]网站

  • dynamic_bitset - 仅 C++17 标头的动态位集。[麻省理工学院]

  • Forest - 实现 AVL、二进制搜索、KD 和四叉树的模板库。[麻省理工学院]

  • Hashmaps - 在 C++ 中实现开放寻址哈希表算法。[麻省理工学院]

  • Hopscotch map - 一种快速的仅包含标头的哈希映射,它使用 hopscotch 哈希来解决冲突。[麻省理工学院]

  • LSHBOX - 局部敏感哈希 (LSH) 的 c++ 工具箱,提供几种流行的 LSH 算法,还支持 Python 和 MATLAB。[通用公共许可证]

  • PGM-index - 一种数据结构,可以在数十亿个项目的数组中进行快速查找、前驱、范围搜索和更新,使用的空间比传统索引少几个数量级。[Apache2]网站

  • plf::list - 一个 std::list 实现,它消除了范围拼接以启用缓存友好的结构,从而产生显着的性能提升。[zLib]网站

  • plf::stack - std::stack 容器适配器的替代容器,比堆栈上下文中的任何 std 容器具有更好的性能。[zLib]网站

  • ring_span lite - Arthur O'Dwyer 的 ring_span 实现的简化实现,即。循环缓冲区视图。[麻省理工学院]

  • robin-hood-hashing - 基于 C++14 的 robin hood 散列的快速且内存高效的散列表。[麻省理工学院]

  • robin-map - 使用 robin hood 散列的快速散列映射和散列集。[麻省理工学院]

  • sparsepp - 用于 C++ 的快速、内存高效的哈希映射。[BSD 3 条款]

密码学

密码学和加密库

  • Bcrypt - 一个跨平台的文件加密工具。加密文件可在所有支持的操作系统和处理器上移植。[BSD]

  • BeeCrypt - 一个可移植且快速的密码库。[LGPLv2.1+]

  • Botan - C++ 的加密库。[BSD-2]

  • Crypto++ - 一个免费的 C++ 加密方案类库。[提升]网站

  • digestpp - C++11 仅标头消息摘要(哈希)库。[公共区域]

  • GnuPG - OpenPGP 标准的完整且免费的实现。[通用公共许可证]

  • GnuTLS - 一个实现 SSL、TLS 和 DTLS 协议的安全通信库。[LGPL2.1]

  • Libgcrypt - 最初基于 GnuPG 代码的通用加密库。[LGPLv2.1+]

  • LibreSSL - 2014 年从 OpenSSL 分叉的 SSL/TLS 协议的免费版本。 [?]

  • libsodium - P(ortable|ackageable)基于 NaCl 的加密库,固执己见且易于使用. [国际标准委员会]

  • libhydrogen - 一个轻量级、安全、易于使用的加密库,适用于受限环境。[国际标准委员会]

  • LibTomCrypt - 一个相当全面、模块化和可移植的加密工具包。[WTFPL]

  • mbedTLS - 一个开源、可移植、易于使用、可读且灵活的 SSL 库,以前称为 PolarSSL。[Apache2]网站

  • Nettle - 一个低级加密库。[LGPL]

  • OpenSSL - 一个强大的、商业级的、功能齐全的开源密码库。[阿帕奇]网站

  • retter - 与密码学相关的哈希函数、密码、工具、库和材料的集合。

  • s2n - TLS/SSL 协议的实现。[阿帕奇]

  • sha1collisiondetection - 用于检测文件中 SHA-1 冲突的库和命令行工具。[麻省理工学院]

  • Tink - 一个多语言、跨平台的库,提供安全、易于正确使用且难以误用的加密 API。[Apache-2.0]

  • Tiny AES in C - C 中的小型便携式 AES128/192/256. [PublicDomain]

  • Themis - 用于无痛数据安全的加密库,为移动和服务器平台提供对称和非对称加密、具有前向保密性的安全套接字。[阿帕奇2]

CSV

用于解析逗号分隔值 (CSV) 文件的库

  • csv2 - 现代 C++ 的快速 CSV 解析器。[麻省理工学院]

  • Csv::Parser - 用 C++17 编写的编译时和运行时 CSV 解析器。[Zlib]

  • Fast C++ CSV Parser - 用于读取 CSV 文件的小型、易于使用和快速的仅标头库。[BSD-3-条款]

  • Vince's CSV Parser - 一个快速、自包含、流式 C++17 CSV 解析器,具有可选的类型转换和统计信息。[麻省理工学院]

数据库

数据库库、SQL Server、ODBC 驱动程序和工具

  • ClickHouse - ClickHouse DBMS 的 C++ 客户端。[阿帕奇2]

  • hiberlite -sqlite3的 C++ 对象关系映射。[BSD]

  • Hiredis - Redis 数据库的简约 C 客户端库。[BSD]

  • LevelDB - Google 编写的快速键值存储库,提供从字符串键到字符串值的有序映射。[BSD]

  • LMDB - 具有完整 ACID 语义的非常快速的嵌入式键/值存储。[OpenLDAP]

  • LMDB++ - LMDB 嵌入式数据库库的 C++11 包装器。[公共区域]

  • MongoDB C 驱动程序- C 的 MongoDB 客户端库。 [Apache2]

  • MongoDB C++ 驱动程序- MongoDB 的 C++ 驱动程序。[阿帕奇2]

  • MongoDB Libbson - BSON 实用程序库。[阿帕奇2]

  • MySQL++ - MySQL 的 C API 的 C++ 包装器。[LGPL]

  • nanodbc - 本机 C ODBC API 的小型 C++ 包装器。[麻省理工学院]

  • ODB - 用于 C++ 的开源、跨平台和跨数据库对象关系映射 (ORM) 系统。[GPLv2]

  • redis3m -hiredis的包装器,具有干净的 C++ 接口,支持哨兵和即用型模式。[阿帕奇2]

  • RocksDB - 嵌入式键值存储,用于从 facebook 快速存储。[BSD]

  • SimDB - 高性能、共享内存、无锁、跨平台、单个文件、最小依赖项、C++11 键值存储 [Apache2]

  • SOCI - C++ 的数据库抽象层。[BSL-1.0]

  • SQLite - 一个完全嵌入的、功能齐全的关系数据库,大小只有 100k,您可以将其直接包含到您的项目中。[公共区域]

  • SQLiteC++ - SQLiteC++ (SQLiteCpp) 是一个智能且易于使用的 C++ SQLite3 包装器。[麻省理工学院]

  • sqlite_modern_cpp - sqlite 库的仅标头 C++14 包装器。[麻省理工学院]

  • sqlite_orm - 现代 C++ 的 SQLite ORM 轻型标头库。[AGPL + 付费麻省理工学院]

  • sqlpp11 - 一种类型安全的嵌入式域特定语言,用于 C++ 中的 SQL 查询和结果。[BSD-2-条款]

  • TileDB - 快速密集和稀疏多维数组 DBMS。[麻省理工学院]网站

  • UnQLite - 一个自包含、无服务器、零配置、事务性 NoSQL 引擎。[BSD-2-Clause]网站

  • upscaledb - 具有内置查询接口的嵌入式“类型化”键/值存储。[GPLv3]

数据可视化

数据可视化库

  • matplotplusplus - 用于数据可视化的 C++ 图形库。[麻省理工学院]网站

调试

调试库、内存泄漏和资源泄漏检测、单元测试

  • backward-cpp - 一个漂亮的 C++ 堆栈跟踪漂亮打印机。[麻省理工学院]

  • benchmark - Google 提供的小型微基准支持库。[阿帕奇2]

  • Boost.Test - Boost 测试库。[促进]

  • check - Check 是 C 的单元测试框架。[LGPL-2.1]网站

  • doctest - 最轻量的功能丰富的 C++ 单头测试框架。[麻省理工学院]

  • Catch2 - 用于单元测试、TDD 和 BDD 的现代、C++ 原生、仅标头测试框架。[BSL-1.0]

  • Celero - C++ 基准测试框架。[阿帕奇2]

  • CppUTest - C/C++ 的单元测试和模拟框架。[BSD-3 条款]

  • CUTE - C++ 单元测试更容易。[LGPL3]

  • CMocka - 支持模拟对象的 C 单元测试框架。[阿帕奇2]

  • CppUnit - JUnit 的 C++ 端口。[LGPL2]

  • CTest - CMake 测试驱动程序。[BSD]

  • dbg-macro - C++ 的 dbg(…) 宏。[麻省理工学院]

  • DebugViewPP - 调试日志查看器。[BSL]

  • Deleaker - 用于资源泄漏检测的工具,包括内存、GDI 和句柄泄漏。

  • fff - 用于创建假 C 函数的微框架。[麻省理工学院]

  • Google Mock - 一个用于编写和使用 C++ 模拟类的库。[BSD]

  • Google Test - Google C++ 测试框架。[BSD]

  • ig-debugheap - 多平台调试堆可用于跟踪内存错误。[BSD]

  • libtap - 用 C 编写测试。[GPL2]

  • MemTrack - 在 C++ 中跟踪内存分配。

  • microprofile - 具有多个平台的 Web 视图的分析器。[许可]

  • MinUnit - C 的最小单元测试框架,包含在单个头文件中。[麻省理工学院]

  • Mockator - 用于 C++ 接缝和模拟对象的 Eclipse CDT 插件。

  • Nanotimer - 一个简单的低开销跨平台计时器类,用于基准测试。[zLib]网站

  • Nonius - C++ 微基准测试框架。[抄送]

  • Remotery - 带有 Web 查看器的单个 C 文件分析器。[阿帕奇2]

  • Touca - 用于测试复杂的关键任务工作流程的自动化回归测试系统。[Apache2]网站

  • UnitTest++ - C++ 的轻量级单元测试框架。[MIT/X 联盟许可证]

  • Unity - C 的简单单元测试。[麻省理工学院]

  • utest.h - C 和 C++ 的单头单元测试框架。[许可]

  • μt - C++20 单头/单模块,无宏 μ(微)/单元测试框架 [Boost]

  • VLD - 视觉检漏仪。一个免费的、强大的、开源的 Visual C++ 内存泄漏检测系统。

字体

用于解析和操作字体文件的库。

  • Fontconfig - 字体配置和自定义库。[麻省理工学院]网站

  • FreeType - FreeType 是一个免费提供的用于渲染字体的软件库。[FTL & GPLv2]

  • otfcc - 用于解析和编写 OpenType 字体文件的 AC 库和实用程序。[Apache-2.0]

游戏引擎

  • Acid - 高速 C++17 Vulkan 游戏引擎。[麻省理工学院]

  • Allegro - 一个主要针对视频游戏和多媒体编程的跨平台库。[zlib]

  • Cocos2d-x - 用于构建 2d 游戏、交互式书籍、演示和其他图形应用程序的多平台框架。[麻省理工学院]

  • Corange - 用纯 C、SDL 和 OpenGL 编写的游戏引擎。[BSD]

  • Crown - Crown 是一个通用的数据驱动游戏引擎,采用正统 C++ 从头开始编写,并牢记简约和面向数据的设计理念。[麻省理工学院]

  • delta3d - 一个强大的模拟平台。[LGPL2]

  • EnTT - 游戏符合现代 C++。[麻省理工学院]

  • GamePlay - 用于创建 2D/3D 移动和桌面游戏的跨平台原生 C++ 游戏框架。[阿帕奇2]

  • Godot - 功能齐全、开源、MIT 许可的游戏引擎。[麻省理工学院]

  • Grit - 社区项目,用于构建免费游戏引擎以实现开放世界 3D 游戏。[麻省理工学院]

  • Halley - 用 C++14 编写的轻量级游戏引擎,具有“真正的”实体组件系统。[阿帕奇 2.0]

  • KlayGE - 具有基于插件架构的跨平台开源游戏引擎。[GPLv2]网站

  • nCine - 一个强调性能的跨平台 2D 游戏引擎,用 C++11 编写,可选用 Lua 编写脚本。[麻省理工学院]网站

  • o3de - 基于 Amazon Lumberyard 的开源、实时、多平台 3D 引擎。[Apache2]网站

  • OpenXRay - 用于 STALKER 游戏系列的社区修改 X 射线引擎。[修改后的 BSD/仅限非商业]

  • Oxygine - 一个跨平台的 2D C++ 游戏引擎。[麻省理工学院]

  • Panda3D - 一个游戏引擎,一个用于 Python 和 C++ 程序的 3D 渲染和游戏开发的框架。[修改 BSD]网站

  • PixelGameEngine - olcPixelGameEngine 的官方发行版,这是 javidx9 的 YouTube 视频和项目中使用的工具。[OLC3]

  • Polycode - C++ 中创意代码的跨平台框架(带有 Lua 绑定)。[麻省理工学院]网站

  • raylib - 一个简单易用的库,用于享受视频游戏编程。[zlib/libpng]网站

  • Spring - 一个强大的免费跨平台 RTS 游戏引擎。[GPLv2/GPLv3]网站

  • Torque2D - 为 2D 游戏开发而构建的开源和跨平台 C++ 引擎。[麻省理工学院]网站

  • Torque3D - 为 3D 游戏开发而构建的开源 C++ 引擎。[麻省理工学院]网站

  • toy engine - toy 是一个轻薄的模块化 c++ 游戏引擎,提供简单的富有表现力的 c++ 习惯用法,以快速迭代设计全功能的 2D 或 3D 游戏。

  • Urho3D - 一个免费的轻量级、跨平台的 2D 和 3D 游戏引擎,用 C++ 实现。受到 OGRE 和 Horde3D 的极大启发。[麻省理工学院]

图形用户界面

图形用户界面

  • Boden - 本机、移动、跨平台 GUI 框架。[GPL/LGPL/商业]网站

  • CEGUI - 灵活的跨平台 GUI 库。

  • Elements - 轻量级、细粒度、独立于分辨率的模块化 GUI 库。[麻省理工学院]

  • FLTK - 快速、轻便、跨平台的 C++ GUI 工具包。[GPL2]

  • GacUI - GPU 加速 C++ 用户界面,具有 WYSIWYG 开发工具、XML 支持、内置数据绑定和 MVVM 功能。[女士-PL]

  • GTK+ - 用于创建图形用户界面的多平台工具包。[LGPL]

  • gtkmm - 流行的 GUI 库 GTK+ 的官方 C++ 接口。[LGPL]

  • imgui - 具有最小依赖性的即时模式图形用户界面。[麻省理工学院]

  • implot - imgui 的即时模式绘图小部件。[麻省理工学院]

  • iup - 用于构建图形用户界面的多平台工具包。[麻省理工学院]

  • libui - C 语言中简单且可移植(但并非不灵活)的 GUI 库,它使用它支持的每个平台的本机 GUI 技术。[麻省理工学院]

  • MyGUI - 快速、灵活和简单的 GUI。[麻省理工学院]

  • nana - Nana 是一个用于现代 C++ 风格的 GUI 编程的跨平台库。[促进]

  • NanoGui - 用于 OpenGL 3.x 或更高版本的简约跨平台小部件库。[BSD]

  • nuklar - 单头 ANSI C gui 库。[公共区域]

  • QCustomPlot - Qt 绘图小部件,没有进一步的依赖关系。[GPLv3]

  • Qwt - 用于技术应用程序的 Qt 小部件。[拥有基于 LGPL]

  • QwtPlot3D - 一个功能丰富的基于 Qt/OpenGL 的 C++ 编程库,本质上提供了一堆 3D 小部件。[zlib]

  • RmlUi - 演变而来的 HTML/CSS 用户界面库。libRocket 的分支。[麻省理工学院]

  • Sciter - Sciter 是一个可嵌入的 HTML/CSS/脚本引擎,旨在用作现代桌面应用程序的 UI 层。[免费/商业]

  • Slint - 用于桌面和嵌入式的轻量级 GUI 工具包。[GPL/免费/商业]网站

  • wxWidgets - 一个 C++ 库,允许开发人员使用单一代码库为 Windows、Mac OS X、Linux 和其他平台创建应用程序。[拥有 LGPL]

  • xtd - 现代 C++17/20 框架,用于在 Windows、macOS、Linux、iOS 和 android 上创建控制台 (CLI)、表单(像 WinForms 的 GUI)和 tunit(像 Microsoft 单元测试框架这样的单元测试)应用程序。[麻省理工学院]

  • Yue - 用于创建本机跨平台 GUI 应用程序的库。[LGPLv2]

图形

  • assimp - 开放资产导入库 (assimp) 是一个跨平台的 3D 模型导入库,旨在为不同的 3D 资产文件格式提供通用 API。[BSD-3-Clause]网站

  • bgfx - 一个跨平台的渲染库。[BSD]

  • Blend2D - 由 JIT 编译器驱动的 2D 矢量图形引擎。[Zlib]网站

  • bs::framework - 用于开发实时图形应用程序的现代 C++14 库。[麻省理工学院]

  • Cairo - 支持多种输出设备的 2D 图形库。[LGPL2 或 Mozilla MPL]

  • C-Turtle - 一个 C++11 仅标头海龟图形库,用作 CImg 包装器。[麻省理工学院]

  • Diligent Engine - 现代跨平台低级 3D 图形库。[阿帕奇2]

  • DirectXTK - 一组帮助类,用于在 C++ 中编写 DirectX 11.x 代码。[麻省理工学院]

  • GLFW - 一个简单的跨平台 OpenGL 争论库。[zlib/libpng]

  • herebedragons - 使用各种引擎、框架或 API 实现的基本 3D 场景。[麻省理工学院]网站

  • Horde3D - 一个小型 3D 渲染和动画引擎。[英超]

  • Ion - 一组小型且高效的库,用于构建使用 3D 图形的跨平台客户端或服务器应用程序。[Apache2]网站

  • Irrlicht - 用 C++ 编写的高性能实时 3D 引擎。[zlib]

  • libigl - 简单的 C++ 几何处理库。[MPL2]

  • LLGL - 低级图形库 (LLGL) 是现代图形 API 的薄抽象层。[BSD-3-条款]

  • magnum - 用于游戏和数据可视化的轻量级和模块化 C++11/C++14 图形中间件。[麻省理工学院]网站

  • NanoVG - 用于 UI 和可视化的 OpenGL 之上的抗锯齿 2D 矢量绘图库。[Zlib]

  • 食人魔 3D ⚡- 用 C++ 编写的面向场景、实时、灵活的 3D 渲染引擎(相对于游戏引擎)。[麻省理工学院]

  • OpenSceneGraph - 一个开源的高性能 3D 图形工具包。[OSGPL]

  • OpenSubdiv - Pixar 的库,用于在 CPU 和 GPU 上评估和渲染细分曲面。[修改Apache2]

  • OpenVDB - 用于存储、编辑和渲染体积数据集的库和工具。[MPL2]

  • Panda3D - 用于 Python 和 C++ 的 3D 渲染和游戏开发框架。[BSD]

  • Partio - 用于处理粒子数据的库,支持最常见的文件格式。[修改后的 BSD]

  • Skia - 一个完整的 2D 图形库,用于绘制文本、几何图形和图像。[BSD]网站

  • TinySpline - 一个小而强大的 ANSI C 库,用于插值、转换和查询任意 NURBS、B 样条和 Bézier 曲线。[麻省理工学院]

  • urho3d - 跨平台渲染和游戏引擎。[许多不同,主要是麻省理工学院]

  • Yocto/GL - 用于数据驱动的基于物理的图形的微型 C++ 库。[麻省理工学院]

图像处理

  • Boost.GIL - 通用图像库。

  • CImg - 用于图像处理的小型开源 C++ 工具包。[拥有 LGPL 或 GPL]

  • CxImage - 一个图像处理和转换库,用于加载、保存、显示、转换 BMP、JPEG、GIF、PNG、TIFF、MNG、ICO、PCX、TGA、WMF、WBMP、JBG、J2K 图像。[zlib]

  • 数据库 ⚡- 现代 C++11 机器学习、计算机视觉、数值优化和深度学习工具包。[提升]网站

  • FreeImage - 一个开源库,支持流行的图形图像格式和当今多媒体应用程序所需的其他格式。[GPL2 或 GPL3]

  • GD - GD 图形库,在 PHP 中用于图像加载/操作和缩略图生成。[自定义许可许可证,需要在用户文档中提及]网站

  • DCMTK - DICOM 工具包。

  • GDCM - 草根 DICOM 库。

  • ITK - 用于图像分析的开源、跨平台系统。[来自 ITK 4.0 的 Apache2]

  • Leptonica - Leptonica 是一个开源库,其中包含可广泛用于图像处理和图像分析应用程序的软件。[BSD-2-Clause]网站

  • libfacedetection - 用于图像中人脸检测的开源库。人脸检测速度可达1500FPS。[BSD]

  • libjpeg-turbo - 使用 SIMD 指令加速基线 JPEG 编码和解码的 JPEG 图像编解码器。[IJG & BSD-3-Clause & zlib]网站

  • libvips - 具有低内存需求的快速图像处理库。[LGPL]网站

  • Magick++ - C++ 的 ImageMagick 程序接口。[阿帕奇2]

  • MagickWnd -C的 ImageMagick 程序接口。[Apache2]

  • 开放式CV ⚡- 开源计算机视觉。[BSD]

  • OpenEXR - 用于高动态范围成像的跨平台库。[修改后的 BSDF]

  • OpenImageIO - 强大的图像和纹理处理库,支持多种常见的有损和 RAW 格式。[修改后的 BSD]

  • SAIL - 易于使用的跨平台图像解码库,带有可插入的图像编解码器。[麻省理工学院]

  • Simd - 使用 SIMD 的 C++ 图像处理库:SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX(Altivec)和 VSX(Power7),用于 ARM 的 NEON。[麻省理工学院]

  • stb-image -STB 单头图像加载库。[公共区域]

  • tesseract-ocr - OCR 引擎。[阿帕奇2]

  • TinyEXIF - 适用于 JPEG 的符合 ISO 标准的微型 C++ EXIF 和 XMP 解析库. [麻省理工学院]

  • Video++ - 一个 C++14 高性能视频和图像处理库。[麻省理工学院]

  • VIGRA - 用于图像分析的通用 C++ 计算机视觉库。[麻省理工学院 X11]

  • VTK - 用于 3D 计算机图形、图像处理和可视化的开源、免费提供的软件系统。[BSD]

国际化

  • gettext - GNU 'gettext'。[GPL2]

  • IBM ICU - 一组提供 Unicode 和全球化支持的 C/C++ 和 Java 库。[重症监护室]

  • libiconv - 不同字符编码之间的编码转换库。[通用公共许可证]

  • utf8.h - C 和 C++ 的单头 utf8 字符串函数。[许可]

  • utf8proc - 一个干净的 C 库,用于处理 UTF-8 Unicode 数据。[麻省理工学院]

进程间通信

  • Apache Thrift - 高效的跨语言 IPC/RPC,在 C++、Java、Python、PHP、C# 和更多其他语言之间工作。最初由 Facebook 开发。[阿帕奇2]

  • Cap'n Proto - 快速数据交换格式和基于能力的 RPC 系统。[麻省理工学院]网站

  • eCAL - Pub/sub、客户端/服务器、C++/Python/C#、各种消息协议(protobuf、capnproto ..)。[Apache2]网站

  • gRPC - 一个高性能、开源、通用的 RPC 框架。[BSD]网站

  • Ice - 全面的 RPC 框架,支持 C++、C#、Java、JavaScript、Python 等。[GPLv2]

  • libjson-rpc-cpp - C++ 服务器和客户端的 JSON-RPC 框架。[麻省理工学院]

  • nanomsg - 几个“可扩展性协议”的简单高性能实现。[麻省理工学院]网站

  • nng - nanomsg-next-generation,一个轻量级的无代理消息库。[麻省理工学院]网站

  • rpclib - 现代 C++ msgpack-RPC 服务器和客户端库。[麻省理工学院]

  • simple-rpc-cpp - C/C++ 函数的简单 RPC 包装器生成器。[BSD]

  • WAMP - 提供 RPC 和 pub/sub 消息传递模式。(各种实现,各种语言)

  • xmlrpc-c - 基于 XML 和 HTTP 的轻量级 RPC 库。[BSD]

JSON

  • Boost.PropertyTree - 可用于解析 XML/JSON/INI/Info 文件的属性树解析器/生成器。[促进]

  • cJSON -ANSI C 中的超轻量级 JSON 解析器。[麻省理工学院]

  • freeze - C/C++ 的 JSON 解析器和生成器. [GPL 和 GPL2]

  • Jansson - 用于编码、解码和操作 JSON 数据的 C 库。[麻省理工学院]

  • jbson -jbson 是一个库,用于在 C++14 中构建和迭代 BSON 数据和 JSON 文档。[促进]

  • JeayeSON - 一个非常健全的(仅标题)C++ JSON 库。[BSD]

  • Jsmn - C 中的简约 JSON 解析器。[麻省理工学院]

  • json ⚡- 现代 C++ 的 JSON。[麻省理工学院]

  • JSON++ - C++ 中的 JSON 解析器。[麻省理工学院]

  • json.h - 一个简单的单头/单源解决方案,用于在 C 和 C++ 中解析 JSON。[许可]

  • json-c - C 中的 JSON 实现。[麻省理工学院]

  • jsoncons - 用于 JSON 和类似 JSON 的二进制格式的 C++ 标头库,具有 JSONPointer、JSONPatch、JSONPath 和 JMESPath。[促进]

  • JsonCpp - 用于与 JSON 交互的 C++ 库。[麻省理工学院]

  • json-parser - 用可移植 ANSI C 编写的占用空间非常小的 JSON 解析器。 [BSD]

  • json11 - 用于 C++11 的小型 JSON 库。[麻省理工学院]

  • json-struct - 高性能、单头 JSON 解析器解析到 C++ 结构和从 C++ 结构解析。[麻省理工学院]

  • json-voorhees - C++ 的 JSON 库。支持 C++11。没有依赖关系,快速且对开发人员友好。[阿帕奇2]

  • jute - 非常简单的 C++ JSON 解析器。[公共区域]

  • libjson - C 中的 JSON 解析器和打印机库。易于与任何模型集成。[LGPL]

  • libjson - 轻量级 JSON 库。[?]

  • 图书馆 ⚡- 通用配置库解析器。[BSD-2-Clause]

  • parson -Parson 是一个用 C 编写的轻量级 json 库。[麻省理工学院]

  • PicoJSON - C++ 中的仅头文件 JSON 解析器序列化程序。[BSD]

  • qt-json - 一个简单的类,用于将 JSON 数据解析为 QVariant 层次结构,反之亦然。[GPLv3]

  • QJson - 一个基于 qt 的库,将 JSON 数据映射到 QVariant 对象。[LGPL2]

  • RapidJSON ⚡- 用于 C++ 的快速 JSON 解析器/生成器,具有 SAX/DOM 样式 API。[麻省理工学院]

  • sajson - 用于 C++11 的轻量级、极高性能 JSON 解析器。[麻省理工学院]

  • simdjson - 速度极快的 JSON 库,每秒可以解析千兆字节的 JSON。[Apache-2.0]

  • taoJSON - 零依赖 C++ 仅标头 JSON 库。[麻省理工学院]

  • ujson - µjson 是一个小型的 C++11、UTF-8、JSON 库。[麻省理工学院]

  • YAJL - C 中的快速流式 JSON 解析库。[ISC]

  • yyjson - 用 ANSI C 编写的高性能 JSON 库。[麻省理工学院]

日志记录

  • Blackhole - 基于属性的日志框架,旨在快速、模块化和高度可定制。[麻省理工学院]

  • Boost.Log - 设计得非常模块化和可扩展。[促进]

  • Easylogging++ - 用于 C++11(或更高版本)应用程序的极轻量级高性能日志记录库。[麻省理工学院]

  • fmtlog - 具有纳秒延迟的高性能 fmtlib 样式日志库。[麻省理工学院]

  • G3log - 具有动态接收器的异步记录器。[公共区域]

  • glog - Google 日志记录模块的 C++ 实现。

  • Log4cpp - 一个 C++ 类库,用于灵活地记录到文件、系统日志、IDSA 和其他目标。[LGPL]

  • log4cplus - 一个简单易用的 C++ 日志 API,提供线程安全、灵活和任意粒度的日志管理和配置控制。[BSD 和 Apache2]

  • loguru - 轻量级 C++ 日志库。[公共区域]

  • plog - 不到 1000 行代码的可移植和简单的 C++ 日志。[MPL2]

  • reckless - 用于 C ++ 的低延迟、高吞吐量、异步日志记录库。[麻省理工学院]

  • spdlog - 超快,仅标头,C++ 日志库。

  • templog - 一个非常小且轻量级的 C++ 库,可用于将日志记录添加到 C++ 应用程序。[促进]

  • P7Baical - 一个开源和跨平台库,用于高速发送遥测和跟踪数据,CPU 和内存使用最少。[LGPL]

  • Quill - 异步跨平台低延迟日志库。[麻省理工学院]

机器学习

  • Caffe - 神经网络的快速框架。[BSD]

  • CCV - 基于 C/缓存/核心的计算机视觉库,现代计算机视觉库。[BSD]

  • darknet - 用 C 和 CUDA 编写的开源神经网络框架。[公共领域]网站

  • 数据库 ⚡- 现代 C++11 机器学习、计算机视觉、数值优化和深度学习工具包。[提升]网站

  • Fido - 用于嵌入式电子和机器人技术的高度模块化 C++ 机器学习库。[麻省理工学院]网站

  • flashlight - 来自 Facebook AI Research 的快速、灵活的机器学习库,完全用 C++ 编写,基于 ArrayFire 张量库。[BSD-3-Clause]网站

  • libsvm - 一个简单、易用、高效的支持向量机库。[BSD-3-Clause]网站

  • m2cgen - 一个 CLI 工具,用于将经过训练的经典 ML 模型转换为具有零依赖性的本机 C 代码。[麻省理工学院]

  • MeTA - 现代 C++ 数据科学工具包。[麻省理工学院]网站

  • Minerva - 一个快速灵活的深度学习系统。[阿帕奇2]

  • mlpack - 一个可扩展的 C++ 机器学习库。[LGPLv3]网站

  • 开放式CV ⚡- 开源计算机视觉库。[BSD]网站

  • oneDAL - 一个强大的机器学习库,有助于加快大数据分析。[阿帕奇]

  • Recommender - 使用协同过滤 (CF) 进行产品推荐/建议的 C 库。[BSD]

  • RNNLIB -RNNLIB 是用于序列学习问题的循环神经网络库。[GPLv3]

  • SHOGUN - Shogun 机器学习工具箱。[GPLv3]

  • sofia-ml - 一套用于机器学习的快速增量算法。[阿帕奇2]

  • VLFeat - VLFeat 开源库实现了流行的计算机视觉算法,专门用于图像理解和局部特征提取和匹配。[BSD-2-Clause]网站

  • xgboost - 可扩展、可移植和分布式梯度提升(GBDT、GBRT 或 GBM)库,适用于 Python、R、Java、Scala、C++ 等。在单机、Hadoop、Spark、Flink 和 DataFlow 上运行。[阿帕奇2]

  • ncnn - 针对移动平台优化的高性能神经网络推理计算框架。[BSD]

数学

  • Apophenia - 用于统计和科学计算的 AC 库 [GPL2]

  • Armadillo - 用于线性代数和科学计算的快速 C++ 库。[Apache2]网站

  • autodiff - 一个现代、快速且富有表现力的 C++ 库,用于自动区分。[麻省理工学院]网站

  • blaze - 用于密集和稀疏算术的高性能 C++ 数学库。[BSD]

  • Boost.Multiprecision - 在 C++ 中提供更高范围/精度的整数、有理数和浮点类型,仅标头或带有 GMP/MPFR/LibTomMath 后端。[促进]

  • ceres-solver - 用于建模和解决来自谷歌的大型复杂非线性最小二乘问题的 C++ 库。[BSD]

  • CGAL - 高效可靠的几何算法的集合。[LGPL&GPL]网站

  • cml - 用于游戏和图形的免费 C++ 数学库。[促进]

  • CNL - C++ 的组合数字库。[促进]

  • CXXGraph - 免费的 C++(17) 图形标头库,用于表示和算法执行。[AGPL-3.0]

  • 数据库 ⚡- 现代 C++11 机器学习、计算机视觉、数值优化和深度学习工具包。[提升]网站

  • Eigen - 用于线性代数、矩阵和向量运算、数值求解器和相关算法的高级 C++ 模板头库。[MPL2]

  • ExprTK - C++ 数学表达式工具包库 (ExprTk) 是一个简单易用、易于集成且极其高效的运行时数学表达式解析器和评估引擎。[麻省理工学院]

  • Geometric Tools - 用于数学、图形、图像分析和物理领域的计算的 C++ 库。[提升]网站

  • GLM - 仅标题的 C++ 数学库,与 OpenGL 的 GLSL 数学匹配并互操作。[麻省理工学院]网站

  • GMTL - 图形数学模板库是一组以通用方式实现图形原语的工具。[GPL2]

  • GMP - 用于任意精度算术的 AC 库,对有符号整数、有理数和浮点数进行操作。[LGPL3 和 GPL2]

  • Klein - 一个快速、SIMD 优化的 C++17 几何代数库,用于点、线和平面投影、相交、连接、刚体运动等。[麻省理工学院]网站

  • linalg.h - 用于 C++ 的单头、公共领域、短向量数学库。[许可]

  • MIRACL - 多精度整数和有理算术密码库。[AGPL]

  • NumCpp - Python Numpy 库的模板化标头仅 C++ 实现。[麻省理工学院]

  • muparser - muParser 是一个用 C++ 编写的可扩展的高性能数学表达式解析器库。[麻省理工学院]

  • LibTomMath - 一个完全用 C 编写的免费开源可移植数论多精度整数库。 [PublicDomain & WTFPL]网站

  • linmath.h - 一个精益线性数学库,针对图形编程。[WTFPL]

  • lp_solve - 用于制定和解决线性规划问题的库。[LGPL]网站

  • OpenBLAS - 基于 GotoBLAS2 1.13 BSD 版本的优化 BLAS 库。[BSD 3 条款]网站

  • PCG-rand - PCG 是一系列用于随机数生成的简单快速、节省空间的统计良好算法。与许多通用 RNG 不同,它们也很难预测。[阿帕奇]

  • QuantLib - 一个免费/开源的量化金融库。[修改 BSD]网站

  • StatsLib - 一个仅包含 C++ 标头的统计分布函数库。[Apache2]网站

  • SymEngine - 快速符号操作库,用 C++ 重写 SymPy 的核心。[麻省理工学院]

  • TinyExpr - 用于从字符串解析和评估数学表达式的 AC 库。[zlib]

  • Vc - C++ 的 SIMD 向量类。[BSD]

  • Versor - 用于几何代数的(快速)通用 C++ 库,包括欧几里得、投影、保形、时空(等)。

  • Wykobi - 一个高效、强大且易于使用的 C++ 2D/3D 面向计算几何例程的 C++ 库。[麻省理工学院]

  • xtensor - 受 NumPy 语法启发,用于使用多维数组表达式进行数值分析的 C++14 库。[BSD 3 条款]网站

  • 通用- 实现任意位置算术的 C++14 仅标头库。位置数系统是一种锥形浮点,比 IEEE 浮点更有效。位置使可重复的计算科学成为可能。[MIT 许可证]网站

内存分配

  • Boehm GC - C 和 C++ 的保守垃圾收集器。【类似X11】网站

  • C Smart Pointers - (GNU) C 编程语言的智能指针。[麻省理工学院]

  • Hoard - 适用于 Linux、Windows 和 Mac 的快速、可扩展且内存高效的 Malloc. [GPL,商业]网站

  • jemalloc - 通用 malloc(3) 实现,强调避免碎片和可扩展的并发支持。[BSD]网站

  • memory - STL 兼容的 C++ 内存分配器库。[ZLib]

  • memory-allocators - 自定义内存分配器以提高动态内存分配的性能。[麻省理工学院]

  • mimalloc - 具有出色性能的紧凑型通用分配器。[麻省理工学院]

  • rpmalloc - 用 C 实现的跨平台无锁线程缓存 16 字节对齐内存分配器。 [PublicDomain]

  • snmalloc - 基于消息传递的高性能分配器。[麻省理工学院]

  • TCMalloc - Google 的快速、多线程 malloc 实现。[Apache-2.0]网站

  • tgc - 用约 500 LOC 编写的 C 的小型垃圾收集器。[BSD]

多媒体

  • GStreamer - 用于构建媒体处理组件图的库。[LGPL]

  • libass - 用于 ASS/SSA 字幕格式的便携式字幕渲染器。[国际标准委员会]

  • libav - 处理多媒体内容(如音频、视频、字幕和相关元数据)的库和工具的集合。[LGPL v2.1+ 及其他]网站

  • LIVE555 Streaming Media - 使用开放标准协议(RTP/RTCP、RTSP、SIP)的多媒体流媒体库。[LGPL]

  • libVLC - libVLC(VLC SDK)媒体框架。[通用公共许可证]

  • MediaInfoLib - 方便地统一显示视频和音频文件最相关的技术和标签数据。[BSD]

  • QtAv - 基于 Qt 和 FFmpeg 的多媒体播放框架,可轻松编写播放器。[LGPL]网站

  • SDL ⚡- 简单的 DirectMedia 层。[zlib]

  • SFML ⚡- 简单快速的多媒体库。[zlib]网站

  • TagLib - 用于读取和编辑几种流行音频格式的元数据的库。[LGPL/MPL]网站

联网

  • ACE - C++ 中的 OO 网络编程工具包。[?麻省理工学院?]

  • Boost.Asio ⚡- 用于网络和低级 I/O 编程的跨平台 C++ 库。[促进]

  • Boost.Beast ⚡- 基于 C++11 的 Boost.Asio 构建的 HTTP 和 WebSocket。[BSL-1.0]网站

  • Breep - 基于事件的高级 C++14 对等库。[EUPL-1.1(OSI 批准)]

  • C++ REST SDK - C++ REST SDK(以前称为卡萨布兰卡). [阿帕奇2]

  • Restbed - C++11 异步 RESTful 框架。[AGPL]

  • Restinio - 一个只有标头的 C++14 库,为您提供嵌入式 HTTP/Websocket 服务器。[BSD]

  • c-ares - 用于异步 DNS 请求的 AC 库。[麻省理工学院]

  • cpp-httplib - 单个文件 C++11 仅标头 HTTP/HTTPS 服务器库。[麻省理工学院]

  • cpp-netlib - 用于高级网络编程的开源库的集合。[促进]

  • cpp-netlib/uri - C++ 的 URI 解析器/构建器库,与 RFC 3986 和 RFC 3987 兼容。[BSL-1.0]

  • CppServer - 超快速和低延迟异步套接字服务器和客户端 C++ 库,支持 TCP、SSL、UDP、HTTP、HTTPS、WebSocket 协议和 10K 连接问题解决方案。[麻省理工学院]

  • cpr - 一个现代 C++ HTTP 请求库,具有简单但功能强大的接口。仿照 Python 请求模块。[麻省理工学院]网站

  • curlcpp - CURL(libcurl)的面向对象的 C++ 包装器。[麻省理工学院]

  • DPDK - 用于快速数据包处理的数据平面开发套件、库和驱动程序。[BSD-3-Clause & GPL-2.0]网站

  • Dyad.c - C 的异步网络。[麻省理工学院]

  • ENet - 可靠的 UDP 网络库。[麻省理工学院]网站

  • evpp - 使用 TCP/UDP/HTTP 协议的 C++ 高性能网络。[BSD]

  • H2O - 优化的 HTTP 服务器,支持 HTTP/1.x 和 HTTP/2。它也可以用作图书馆。[麻省理工学院]

  • HTTP 解析器 ⚡- C 的 http 请求/响应解析器。[麻省理工学院]

  • KCP - 一种快速可靠的 ARQ 协议,可帮助应用程序减少网络延迟。[麻省理工学院]

  • libcurl - 多协议文件传输库。[MIT/X 衍生许可证]

  • libhttpserver - 用于创建嵌入式 Rest HTTP 服务器(以及更多)的 C++ 库。[LGPL2.1]

  • Libmicrohttpd - GNU libmicrohttpd 是一个小型 C 库,应该可以轻松地将 HTTP 服务器作为另一个应用程序的一部分运行。[LGPL v2.1+]

  • libpcap - 用于网络流量捕获的可移植 C/C++ 库。[BSD]网站

  • libquic - 从 Chromium 的 QUIC 实现中提取的 QUIC 协议库。[BSD]

  • librdkafka - 用于 C 和 C++ 的 Apache Kafka 客户端库。[BSD-2-条款]

  • libwebsockets - 提供客户端和服务器库的轻量级纯 C WebSocket 实现。【LGPL2.1+静态链接异常】网站

  • lwIP - 轻量级 TCP/IP 堆栈。[修改后的 BSD]

  • Mongoose - 极其轻量级的网络服务器。[GPL2]

  • MQTT-C - 适用于嵌入式系统和 PC 的便携式 MQTT C 客户端。[麻省理工学院]网站

  • mTCP - 用于多核系统的高度可扩展的用户级 TCP 堆栈。[修改后的 BSD]

  • Muduo - Linux 中用于多线程服务器的 C++ 非阻塞网络库。[BSD]

  • nghttp2 - HTTP/2 C 库。[麻省理工学院]网站

  • Onion - C 中的 HTTP 服务器库,旨在轻量级且易于使用。[Apache2/GPL2]

  • PF_RING™ - 高速数据包处理框架。[LGPL-2.1]网站

  • PicoHTTPParser - 一个小巧、原始、快速的 HTTP 请求/响应解析器。[麻省理工学院]

  • POCO ⚡- C++ 类库和框架,用于构建在桌面、服务器、移动和嵌入式系统上运行的基于网络和互联网的应用程序。[提升]网站

  • Proxygen - Facebook 的 C++ HTTP 库集合,包括一个易于使用的 HTTP 服务器。[BSD]

  • RakNet - 面向游戏程序员的跨平台、开源、C++ 网络引擎。[BSD]

  • restclient-cpp - C++ 的简单 REST 客户端。它为 HTTP 请求包装 libcurl。[麻省理工学院]

  • Seasocks - 简单、小型、可嵌入 C++ 的 Web 服务器,支持 WebSockets。[BSD]

  • Silicon - 一个高性能、面向中间件的 C++14 http web 框架。[麻省理工学院]

  • tlse - 单个 C 文件 TLS 1.2/1.3 实现,使用 tomcrypt 作为加密库。[BSD-2-Clause]

  • Tufão - 基于 Qt 构建的 C++ 异步 Web 框架。[LGPL2]

  • uriparser - 严格符合 RFC 3986 的 URI 解析和处理库。[BSD-3-条款]

  • uWebSockets - µWS 是可用的最轻量级、最高效和可扩展的 WebSocket 和 HTTP 服务器实现之一。[Zlib]

  • WAFer - 基于 AC 语言的超轻软件平台,用于可扩展的服务器端和网络应用程序。想想 C 程序员的 node.js。[GPL2]

  • Wangle - 用于构建异步、事件驱动的现代 C++ 服务的客户端/服务器应用程序框架。[Apache-2.0]

  • wdt - 一个嵌入式库(和命令行工具),旨在通过多个 TCP 路径在 2 个系统之间尽可能快地传输数据。[BSD-3-条款]

  • WebSocket++ - 基于 C++/Boost Asio 的 websocket 客户端/服务器库。[BSD]

  • PcapPlusPlus - 一个多平台 C++ 网络嗅探和数据包解析和制作框架。[许可]

  • ZeroMQ - 高速、模块化的异步通信库。[LGPL]网站

PDF格式

用于解析和处理 PDF 文档的库。

  • libharu - 用于生成 PDF 的免费、跨平台、开源软件库。[zlib]

  • litePDF - 创建和编辑 PDF 文档的库,它通过设备上下文使用 GDI 函数来绘制页面内容。[LGPL v3 和 zlib]

  • MuPDF - 轻量级 PDF、XPS 和电子书查看器。[AGPL/商业]

  • PoDoFo - 使用 PDF 文件格式的库。[LGPL]

  • Poppler - 基于 xpdf-3.0 代码库的开源多后端 PDF 渲染库。[GPLv2/GPLv3]

  • Xpdf - Xpdf 是一个免费的 PDF 查看器和工具包,包括文本提取器、图像转换器、HTML 转换器等。[GPL v2/GPL v3]

  • DynaPDF - 一个易于使用的 PDF 生成库。[商业的]

物理

动力学仿真引擎

  • Box2D - 用于游戏的 2D 物理引擎。[类似BSD]

  • Bullet - 用于游戏的 3D 物理引擎。[zlib]网站

  • Chipmunk - 一个快速轻量级的 2D 游戏物理库。[麻省理工学院]网站

  • LiquidFun - 用于游戏的 2D 物理引擎。[类似BSD]

  • Newton Dynamics - 用于实时模拟物理环境的集成解决方案。[zlib]

  • ODE - Open Dynamics Engine - 用于模拟刚体动力学的开源、高性能库。[BSD&LGPL]

  • Kratos - 用于构建并行、多学科仿真软件的框架,旨在实现模块化、可扩展性和高性能。[BSD]网站

  • ofxBox2d - Box2D 的 openFrameworks 包装器。[类似BSD]

  • PhysX - 由 Nvidia 开发的开源实时物理引擎中间件 SDK,作为 Nvidia GameWorks 软件套件的一部分。[BSD-3-条款]

  • Project Chrono - 一个开源的多物理仿真引擎。[BSD-3-Clause]网站

  • Quantum++ - 现代 C++11 量子计算库。[麻省理工学院]

  • Simbody - 高性能 C++ 多体动力学/物理库,用于模拟关节生物力学和机械系统,如车辆、机器人和人体骨骼。[阿帕奇2]

  • SOFA - SOFA 是一个针对实时模拟的开源框架,重点是医学模拟。[LGPL]网站

反射

  • config-loader - 一个 C++17 静态反射框架,从解析配置文件到原生数据结构。[麻省理工学院]

  • Better Enums - 反射枚举(到字符串,迭代)。单头。[BSD]网站

  • clReflect - 使用 clang 的 C++ 反射。[麻省理工学院]

  • CPFG - 用于反射、回调和脚本绑定的 C++03 库。[Apache2]网站

  • CPP-Reflection - 使用 clang 的 C++ 反射。[麻省理工学院]

  • Magic Enum - 仅标头的 C++17 库为枚举(到字符串、从字符串、迭代)提供静态反射,无需任何宏或样板代码即可使用任何枚举类型。[麻省理工学院]

  • magic_get - std::tuple 类似用户定义类型的方法,没有任何宏或样板代码。[促进]

  • meta - C++ 中的仅标头、非侵入式和无宏运行时反射系统。[麻省理工学院]

  • Nameof - 仅头文件的 C++17 库提供 nameof 宏和函数来获取变量、类型、函数、宏和枚举的简单名称。[麻省理工学院]

  • Ponder - 用于反射的 C++11 库。[麻省理工学院]

  • RTTR - 用于反射的 C++11 库。[麻省理工学院]网站

  • visit_struct - 用于 C++ 中结构字段反射的微型库。[BSL-1.0]

  • Refreku - C++17 运行时反射和代码生成库。[麻省理工学院]

正则表达式

  • CppVerbalExpressions - C++ 正则表达式变得简单。[麻省理工学院]

  • CTRE - 编译时 PCRE(几乎)兼容的正则表达式匹配器。[麻省理工学院]

  • Hyperscan - Hyperscan 是 Intel 的高性能多正则表达式匹配库。提供大量正则表达式(多达数万个)的同时匹配。通常用于 DPI 库堆栈。[BSD]

  • Oniguruma - 一个现代且灵活的正则表达式库,支持各种字符编码。[BSD]

  • PCRE - 一个正则表达式 C 库,灵感来自 Perl 中的正则表达式功能。[BSD]

  • PIRE -Yandex的 Perl 不兼容的正则表达式库可以非常快(超过 400 MB/s)。[LPGL v3.0]

  • RE2 - 通过使用自动机理论的有限状态机进行正则表达式的软件库。[BSD-3-条款]

  • SLRE - 用于 C/C++ 的超轻量级正则表达式引擎。[GPLv2/商业]

  • sregex - 一个非回溯 NFA/DFA 基于 Perl 的正则表达式引擎库,用于匹配大型数据流。[BSD]

机器人技术

  • MOOS-IvP - 一组开源 C++ 模块,用于在机器人平台上提供自主权,特别是自主海上车辆。

  • MRPT - 移动机器人编程工具包。[BSD]

  • PCL - 点云库是一个独立的、大规模的、开放的 2D/3D 图像和点云处理项目 [BSD]网站

  • Robotics Library (RL) - 用于机器人运动学、运动规划和控制的独立 C++ 库。[BSD]

  • RobWork - 用于模拟和控制机器人系统的 C++ 库的集合。[Apache2]网站

  • ROS - 机器人操作系统提供库和工具来帮助软件开发人员创建机器人应用程序。[BSD]

  • YARP (Yet Another Robot Platform) - 用于通信和设备接口的库和工具包。[BSD-3-Clause]网站

科学计算

  • AMGCL - 一个只有头文件的 C++ 库,用于解决具有代数多重网格的大型稀疏线性系统。[麻省理工学院]

  • FFTW - 用于计算一维或多维 DFT 的 AC 库。[通用公共许可证]

  • GSL - GNU 科学图书馆。[通用公共许可证]

  • preCICE - 用于分区多物理场仿真(FSI、CHT 等)的耦合库。[LGPL]网站

  • TileDB - 快速密集和稀疏多维数组 DBMS。[麻省理工学院]网站

  • Trilinos - 高性能 PDE 求解器。[BSD]

  • Torch - 一种科学计算框架,广泛支持将 GPU 放在首位的机器学习算法。[BSD-3-Clause]网站

脚本

  • AngelScript - AngelScript 是一种面向游戏的解释/编译脚本语言。[zlib]

  • Boost.Python - 一个 C++ 库,可实现 C++ 和 Python 编程语言之间的无缝互操作性。[促进]

  • cppimport - 直接从 Python 导入 C++ 文件![麻省理工学院]

  • CppSharp - 将 C/C++ API 粘合到高级语言的工具和库。[麻省理工学院]

  • ChaiScript - 一种易于使用的 C++ 嵌入式脚本语言。[BSD]网站

  • ctypes.sh - bash 的外部函数接口。[麻省理工学院]

  • Cython - Cython 是 Python 编程语言和扩展 Cython 编程语言(基于 Pyrex)的优化静态编译器。它使得为 Python 编写 C 扩展就像 Python 本身一样容易。[阿帕奇]网站

  • djinni - 用于生成跨语言类型声明和接口绑定的工具。[阿帕奇2]

  • Duktape - 一个紧凑的嵌入式 Javascript 引擎。[麻省理工学院]网站

  • JavaCpp - Java 和本机 C++ 之间缺少的桥梁。[阿帕奇2]

  • libffi - 一个可移植的外部函数接口库。[麻省理工学院]网站

  • Lua - 用于配置文件和基本应用程序脚本的最小且快速的脚本引擎。[麻省理工学院]

  • LuaBridge - 用于将 Lua 绑定到 C++ 的轻量级、无依赖库。[麻省理工学院]

  • luacxx - 用于创建 Lua 绑定的 C++11 API。[麻省理工学院]

  • nbind - 使您的 C++ 库可从 JavaScript 访问的神奇头文件。[麻省理工学院]

  • PHP-CPP - 一个使用 C++ 构建 PHP 扩展的库。[Apache2]网站

  • pybind11 - C++11 和 Python 之间的无缝可操作性。[BSD]

  • SIP - 适用于 Python v2 和 v3 的 C 或 C++ 绑定生成器。[通用公共许可证]

  • sol2 - 具有高级功能和一流性能的 C++ <-> Lua API 包装器。[麻省理工学院]

  • SWIG - 一个包装器/接口生成器,可让您将 c++ 代码链接到 Javascript、Perl、PHP、Python、Tcl 和 Ruby。[GPL/输出未授权]网站

  • V7 - 嵌入式 JavaScript 引擎。[GPL2]

  • V8 - Google 的快速 JavaScript 引擎,可以嵌入到任何 C++ 应用程序中。[BSD]

  • ChakraCore -Microsoft的一个JavaScript 引擎,可以嵌入到 nodejs 中。[麻省理工学院]

序列化

  • Bitsery - 仅标头 C++ 二进制序列化库。[麻省理工学院]

  • Bond - 一个用于处理模式化数据的开源、跨平台框架。[麻省理工学院]

  • Boost.Serialization - Boost 序列化库。[促进]

  • Cap'n Proto - 快速数据交换格式和基于能力的 RPC 系统。[麻省理工学院]网站

  • 谷物- 用于序列化的 C++11 库。[BSD]

  • cista - 用于零拷贝高性能(反)序列化的 C++17 库。[麻省理工学院]

  • cppcodec - 仅标头的 C++11 库,用于使用一致、灵活的 API 编码/解码 base64、base32 和 hex。[麻省理工学院]

  • FastBinaryEncoding - 快速二进制编码是 C++、C#、Go、Java、JavaScript、Kotlin、Python、Ruby、Swift 的超快速和通用序列化解决方案。[麻省理工学院]

  • FlatBuffers - 一个内存高效的序列化库。[阿帕奇2]

  • MessagePack - C 和 C++ 的高效二进制序列化格式“像 JSON”。[Apache2]网站

  • mrpt-serialization - 版本化序列化为二进制或文本格式。[BSD]网站

  • nanopb -ANSI C 中的小代码大小协议缓冲区实现。[Zlib]

  • protobuf - 协议缓冲区 - Google 的数据交换格式。[BSD]

  • protobuf-c -C中的协议缓冲区实现。[BSD]

  • SimpleBinaryEncoding - 以二进制格式对低延迟应用程序的应用程序消息进行编码和解码。[阿帕奇2]

  • upb - C 中的小型 protobuf 实现。 [BSD]

  • YAS - 非常快Y另一个序列化库支持二进制/文本/json 格式。[促进]

排序

  • pdqsort - 击败模式的快速排序。[zlib]

  • Timsort - 一个模板化的稳定排序函数,对于反向或半排序数据,它优于基于快速排序的算法,包括 std::sort。[麻省理工学院]

  • Indiesort - 一个排序包装器,它允许在非随机访问容器中使用 std::sort (和其他随机访问排序功能),并且还提高了随机访问容器中大型/非平凡可复制类型的排序性能和数组。[zLib]网站

视频

  • libvpx - VP8/VP9 编解码器 SDK。[BSD]

  • FFmpeg - 一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。[LGPL2/GPL2]

  • libde265 - 打开 h.265 视频编解码器实现。[LGPL]网站

  • x265 - 打开 h.265 视频编解码器实现。[GPL2]网站

  • OpenH264 - 开源 H.264 编解码器。[BSD]网站

  • Theora - 一种免费且开放的视频压缩格式。[BSD]

  • Vireo - Twitter 的轻量级多功能视频处理库。[麻省理工学院]

虚拟机

  • CarpVM - C 中“有趣的”VM。让我们看看这是怎么回事。[GPLv3]

  • MicroPython - 旨在将 Python 3.x 的实现放在微控制器上。[麻省理工学院]

  • TinyVM - 用纯 ANSI C 编写的小型、快速、轻量级虚拟机。[麻省理工学院]

网络应用框架

  • Civetweb - 提供易于使用、功能强大、可嵌入 C/C++ 的 Web 服务器,具有可选的 CGI、SSL 和 Lua 支持。[麻省理工学院]

  • C++ REST SDK - Microsoft 项目,用于使用现代异步 C++ API 设计以本机代码进行基于云的客户端-服务器通信。[麻省理工学院]

  • CppCMS - 免费的高性能 Web 开发框架(不是 CMS)。[LGPLv3]

  • Crow - Crow 是一个用于运行 Web 服务的 C++ 微框架。它使用类似于 Python 的 Flask 的路由。[BSD]网站

  • Cutelyst - 一个基于 Qt 构建的 C++ Web 框架,使用 Catalyst (Perl) 框架的简单方法。[LGPLv2.1+]网站

  • Drogon - 基于 C++14/17 的高性能 HTTP 应用程序框架。[麻省理工学院]

  • facil.io - 支持 HTTP、WebSockets、SSE 等的事件、高性能 C Web 框架。[麻省理工学院]网站

  • Kore - 用 C 开发的用于 Web 应用程序的超快速和灵活的 Web 服务器/框架。[ISC]

  • libOnion - 轻量级库,可帮助您使用 C 编程语言创建 Web 服务器。[LGPLv3]

  • lwan - 实验性的、可扩展的、高性能的 HTTP 服务器。[GPL2]

  • oat++ - 创建高性能 Web 服务的轻量级零依赖框架。[Apache-2.0]网站

  • Pistache -Pistache 是一个用纯 C++11 编写的 C++ REST 框架,没有外部依赖。[阿帕奇2]

  • QDjango - 一个用 C++ 编写并建立在 Qt 库之上的 Web 框架。在可能的情况下,它会尝试遵循 django 的 API,因此得名。[LGPL]

  • TreeFrog Framework - 基于 C++ 和 Qt 的高速全栈 Web 应用程序框架,支持 HTTP 和 WebSocket 协议(带有 O/R 映射)。[BSD]网站

  • Wt - 用于开发 Web 应用程序的 C++ 库。[GPL/商业]

XML

XML是废话。真的。没有任何借口。XML 对人类来说很难解析,即使对计算机来说解析也是一场灾难。这种可怕的废话没有理由存在。- 莱纳斯·托瓦兹

  • Boost.PropertyTree - 可用于解析 XML/JSON/INI/Info 文件的属性树解析器/生成器。[促进]

  • Expat - 用 C 编写的 XML 解析器库。[麻省理工学院]

  • Libxml2 - Gnome 的 XML C 解析器和工具包。[麻省理工学院]

  • libxml++ - C++ 的 XML 解析器。[LGPL2]

  • Mini-XML - 用 ANSI C 编写的小型 XML 解析库。[LGPL2 有例外]

  • PugiXML - 用于 C++ 的轻量级、简单且快速的 XML 解析器,支持 XPath。[麻省理工学院]

  • RapidXml - 尝试创建最快的 XML 解析器,同时保持可用性、可移植性和合理的 W3C 兼容性。[促进]

  • TinyXML - 一个简单、小型、最小的 C++ XML 解析器,可以轻松集成到其他程序中。[zlib]

  • TinyXML2 - 一个简单、小巧、高效的 C++ XML 解析器,可以轻松集成到其他程序中。[zlib]

  • TinyXML++ - TinyXML 的全新接口,它使用了许多 C++ 优势。模板、异常和更好的错误处理。[麻省理工学院]

  • Xerces-C++ - 用 C++ 的可移植子集编写的验证 XML 解析器。[阿帕奇2]

yaml

  • mini-yaml - 单头 YAML 1.0 C++11 序列化器/解串器。[麻省理工学院]

  • yaml-cpp - C++ 中的 YAML 解析器和发射器。 [麻省理工学院]

各种各样的

不属于上述类别或可能尚未分类的有用库或工具

  • access_profiler - 一种计算对 c++ 程序中成员变量的访问的工具。[GPL3]

  • American Fuzzy lop aka afl-fuzz - 疯狂的 fuzzing 工具,可以在给定时间和最少的示例输入的情况下自动发现错误。[阿帕奇2]

  • Better String - C 的字符串库的替代方案,功能更强大且没有缓冲区溢出溢出问题。还包括一个 C++ 包装器。[BSD,GPL2]

  • Boost.Signals - 托管信号和插槽系统的实现。[促进]

  • CPPItertools - 受 Python 内置函数和 itertools 库启发的基于范围的 for 循环插件。[BSD-2-条款]

  • DynaMix - 一个允许您在运行时组合和修改对象的库。[麻省理工学院]

  • {fmt} ⚡- 小型、安全和快速的 C++ 格式化库。[简化 BSD]

  • FastFormat - 受 log4j 和 Pantheios [Simplified BSD] 启发的快速、安全的 C++ 格式化。

  • casacore - 一组从 aips++ 派生的 c++ 核心库。[LGPL]

  • QtVerbalExpressions - 这个 Qt 库基于 C++ VerbalExpressions 库。[麻省理工学院]

  • cxx-prettyprint - 一个漂亮的 C++ 容器打印库。[促进]

  • icecream-cpp - 一个用于调试目的的小型打印库。[麻省理工学院]

  • gcc-poison - 一个简单的头文件,供开发人员从应用程序中禁止不安全的 C/C++ 函数。

  • Kangaru - C++11 和 C++14 的依赖注入容器。[麻省理工学院]

  • Klib - 常见算法和数据结构的小型轻量级实现。[麻省理工学院]

  • libsigc++ - 标准 C++ 的类型安全回调系统。[LGPL]网站

  • libcpuid - 用于 x86 CPU 检测和特征提取的小型 C 库。[BSD]

  • libevil - 邪恶的许可证管理器。[GPLv3]

  • libnih - C 函数和结构的轻量级库。[GPL2.1]

  • libusb - 一个通用 USB 库,允许便携式访问 USB 设备。[LGPL2]

  • Mach7 - C++ 的模式匹配库。[BSD]

  • mio - 用于内存映射文件 IO 的跨平台 C++11 仅标头库。[麻省理工学院]

  • PEGTL - 解析表达式语法模板库。[麻省理工学院]

  • Remote Call Framework - C++ 的进程间通信框架。[GPL2/商业]

  • Scintilla - 一个免费的源代码编辑组件。[麻省理工学院]

  • SDS - C 的简单动态字符串库。 [BSD]

  • semver.c - 一个 semver 解析器并在 ANSI C 中呈现。[麻省理工学院]

  • 串行通信库- 用 C++ 编写的跨平台串行端口库。[麻省理工学院]

  • sigslot - C++ 信号/插槽库。[公共区域]

  • SimpleSignal - 高性能 C++11 信号。[公共区域]

  • Stage - 移动机器人模拟器。[GPL2]

  • stdman格式化的 C++11/14 stdlib 手册页(来自 cppreference)。[麻省理工学院]

  • 机顶盒 ⚡- 一系列用于 C/C++ 的单文件库。[公共区域]

  • StrTk - 由高性能字符串处理例程组成的 C++ 库。[麻省理工学院]

  • Tulip Indicators - 超过 100 个金融技术分析指标的 AC 库。[LGPL]

  • ub-canaries - 一组 C/C++ 程序,它们试图让编译器利用未定义的行为。

  • value-category-cheatsheet用于左值、右值等的 PDF 备忘单。[詹克版权所有]

  • VarTypes - 一个功能丰富、面向对象的框架,用于在 C++/Qt4 中管理变量。[LGPL]

  • ZBar - 一个条码扫描器库,允许扫描照片/图像/视频流中的条码并返回它们的值。[LGPL2]

  • ZXing - 一个开源的、多格式的一维/二维条码图像处理库,用 Java 实现,可移植到其他语言。[阿帕奇]

  • pprint - 现代 C++ 的漂亮打印机。[麻省理工学院]

软件

用于创建开发环境的软件。

编译器

C 或 C++ 编译器列表

  • 8cc - 小型 C 编译器。

  • c - 一次性编译并执行 C“脚本”![麻省理工学院]

  • Clang - LLVM 的 AC 编译器。支持 C++11/14/1z C11。由 LLVM 团队开发。[NCSA]

  • GCC - GNU 编译器集合。支持 C++11/14/1z C11 和 OpenMP。[GNU GPL3]

  • PCC - 一个非常古老的 C 编译器。支持 C99。

  • 英特尔 C++ 编译器- 由英特尔开发。

  • LLVM - 模块化和可重用编译器和工具链技术的集合。

  • Microsoft Visual C++ - MSVC,由 Microsoft 开发。

  • Open WatCom - Watcom C、C++ 和 Fortran 交叉编译器和工具。[Sybase 开放 Watcom 公共许可证]

  • Oracle Solaris Studio - 用于 SPARC 和 x86 的 C、C++ 和 Fortran 编译器。支持 C++11。在 Linux 和 Solaris 上可用。[OTN 开发者许可]

  • TCC - 微型 C 编译器。[LGPL]

在线编译器

在线 C 或 C++ 编译器列表

  • codechef - 一个简单的在线编译器 CodeChef。

  • codepad - 一个在线编译器/解释器,以及一个简单的协作工具。

  • coliru - 支持各种 C++ 编译器的在线编译器/shell。

  • Compiler Explorer - 具有可用汇编输出的交互式编译器。

  • CompileOnline - 在 Linux 上在线编译和执行 C++。

  • Ideone - 一个在线编译器和调试工具,允许您编译源代码并以 60 多种编程语言在线执行它。

  • repl.it - 面向教育者、学习者和开发人员的强大而简单的工具和平台。

  • Rextester - 提供多种编译器(Clang、GCC、MSVC)和多种编辑器的在线编译器。

  • Try It Online - TIO 是一个在线解释器系列,用于不断增长的实用和娱乐编程语言列表。

  • Wandbox - 带有 Boost 的在线 Clang/GCC 编译器。

  • paiza.io - 具有多个文件支持功能、Github(gist) 集成和协作编辑的在线 C/C++ 编译器。

  • InterviewBit - 一个简单易用的在线 C++ 编译器。

调试器

C 或 C++ 调试器列表

  • 调试器比较- 来自维基百科的调试器列表。

  • GDB - GNU 调试器。

  • LLDB - LLDB 调试器。

  • Metashell - 包含 MDB 元调试器的交互式模板元编程外壳。

  • Valgrind - 用于内存调试、内存泄漏检测和分析的工具。

  • x64dbg - 适用于 Windows 的开源 x64/x32 调试器。

集成开发环境

C 或 C++ 标称 IDE 列表。

  • Anjuta DevStudio - GNOME IDE。[GPL3]

  • AppCode - 基于 JetBrains 的 IntelliJ IDEA 平台构建的用于 Objective-C、C、C++ 和 JavaScript 开发的 IDE。

  • Cevelop - 基于 Eclipse CDT 的跨平台 C 和 C++ IDE,带有附加插件。

  • CLion - 来自 JetBrains 的跨平台 C 和 C++ IDE。

  • Code::Blocks - 免费的 C、C++ 和 Fortran IDE。

  • CodeLite - 另一个跨平台的免费 C 和 C++ IDE。[GPL2 插件例外]

  • color_coded - 基于 libclang 突出显示的 vim 插件。[麻省理工学院]

  • Dev-C++ - 可移植的 C/C++/C++11 IDE。

  • Eclipse CDT - 基于 Eclipse 平台的全功能 C 和 C++ IDE。

  • Geany - 小型、快速、跨平台的 IDE。[通用公共许可证]

  • IBM VisualAge - IBM 的一系列计算机集成开发环境。

  • Irony-mode - 由 libclang 提供支持的 Emacs 的 AC/C++ 次要模式。

  • juCi++ - 具有 libclang 集成的跨平台、轻量级 C++ IDE。[麻省理工学院]

  • KDevelop - 一个免费的开源 IDE。

  • Microsoft Visual Studio - 来自 Microsoft 的 IDE。

  • 微软 Visual Studio 代码 ⚡- 来自 Microsoft 的开源 IDE。[麻省理工学院]

  • NetBeans - 一个主要使用 Java 进行开发的 IDE,也可以使用其他语言进行开发,特别是 PHP、C/C++ 和 HTML5。

  • Qt 创作者 ⚡- 一个跨平台的 C++、JavaScript 和 QML IDE,它是 Qt SDK 的一部分。

  • rtags - 一个 c/c++ 客户端/服务器索引器,用于与基于 clang 的 emacs 集成。

  • Xcode - 由 Apple 开发。

  • YouCompleteMe - YouCompleteMe 是一个快速的、随你输入的、用于 Vim 的模糊搜索代码完成引擎。

  • cquery - 用于 vscode、emacs、vim 等的 C++ 代码完成引擎。

构建系统

  • Bazel - 来自 Google 的多语言、快速且可扩展的构建系统。[阿帕奇]

  • Bear - 为 clang 工具生成编译数据库的工具。[GPLv3]

  • Buck - 一个快速构建系统,鼓励在各种平台和语言(包括 Facebook 开发和使用的 C++)上创建小型、可重用模块。用 Java 编写。[阿帕奇]

  • build2 - 用于开发和打包 C/C++ 项目的跨平台构建、打包和依赖管理工具链。[麻省理工学院]

  • clib - C 编程语言的包管理器。[麻省理工学院]

  • CMake - 跨平台的免费和开源软件,用于使用独立于编译器的方法管理软件的构建过程。[BSD]

  • Cget - Cmake 包检索。[提升]网站

  • Conan - C/C++ 包管理器,开源。[麻省理工学院]

  • CPM - 基于 CMake 和 Git 的 C++ 包管理器。

  • FASTBuild - 高性能、开源构建系统,支持高度可扩展的编译、缓存和网络分发。

  • Hunter - CMake 驱动的 C++ 跨平台包管理器。 [BSD-2]

  • MesonBuild - 一个开源的构建系统,既要非常快,更重要的是要尽可能地对用户友好。

  • Ninja - 一个专注于速度的小型构建系统。

  • Scons - 使用 Python 脚本配置的软件构建工具。

  • Sconsolidator -Scons 为 Eclipse CDT 构建系统集成。

  • Spack - 一个灵活的包管理器,支持多个版本、配置、平台和编译器。[Apache-2.0/MIT]

  • SW - 跨平台 C++(和其他语言)构建系统和包管理器,有很多可用的包。[GPLv3]

  • tundra - 高性能代码构建系统,旨在为非常大的软件项目提供最佳的增量构建时间。

  • tup - 基于文件的构建系统,在后台监视更改的文件。

  • Premake - 一个配置了 Lua 脚本的工具,用于为 Visual Studio、GNU Make、Xcode、Code::Blocks 等跨 Windows、Mac OS X 和 Linux 生成项目文件。

  • Vcpkg - 适用于 Windows、Linux 和 MacOS 的 C++ 库管理器。[麻省理工学院]

  • waf - 基于 Python 的框架,用于配置、编译和安装应用程序。[BSD]网站

  • XMake - 基于 Lua 的 AC/C++ 跨平台构建实用程序。[阿帕奇]

静态代码分析

通过代码分析提高质量和减少缺陷的工具列表

  • Cppcheck - 用于静态 C/C++ 代码分析的工具。-来源

  • CppDepend - 通过分析和可视化代码依赖关系、定义设计规则、进行影响分析和比较不同版本的代码,简化复杂 C/C++ 代码库的管理。

  • cpplint - 遵循 Google 的 C++ 样式指南的 C++ 样式检查器。

  • PVS-Studio - 用 C、C++ 和 C# 编写的程序源代码中的错误检测工具。

  • cpp-dependencies - 检查 C++ #include 依赖关系的工具(以 .dot 格式创建的依赖关系图)。[阿帕奇]

  • include-what-you-use - 与 clang 一起使用的工具,用于分析 C 和 C++ 源文件中的包含。网站

  • Infer - Java、C 和 Objective-C 的静态分析器。[BSD]

  • OCLint - 一种静态源代码分析工具,用于提高 C、C++ 和 Objective-C 的质量并减少缺陷。-来源

  • Clang Static Analyzer - 一种源代码分析工具,用于发现 C、C++ 和 Objective-C 程序中的错误。

  • Linticator - Pc-/FlexeLint 的 Eclipse CDT 集成。

  • IKOS - 基于抽象解释理论的 C/C++ 静态分析器。[NOSA 1.3]

  • List of tools for static code analysis - 来自维基百科的静态代码分析工具列表。

编码风格工具

  • 艺术风格- 格式化 C/C++/C#/Obj-C/Java 代码的工具。也称为风格。

  • ClangFormat - 格式化 C/C++/Obj-C 代码的工具。

  • Clang-Tidy - 基于 Clang 的 C++ linter 工具。

  • EditorConfig - EditorConfig 有助于在不同的编辑器和 IDE 之间保持一致的编码风格。

  • Uncrustify - 代码美化器。

在 Clion 中引入 Google Test,可以按照以下步骤操作: 1. 下载 Google Test 首先需要下载 Google Test ,可以从官网上下载最新版本的。 2. 编译 Google Test 在下载完 Google Test 后,需要将其编译成可链接的。可以按照以下步骤进行编译: - 在的根目录下创建一个 build 目录 - 进入 build 目录,并执行以下命令: ``` cmake .. make ``` 这将生成 `gtest.a` 和 `gtest_main.a` 两个文件。 3. 创建 Clion 项目 在 Clion 中创建一个新的 C++ 项目,选择空项目模板。在项目根目录下创建一个 `lib` 目录,将 `gtest.a` 和 `gtest_main.a` 两个文件拷贝到该目录下。 4. 配置 CMakeLists.txt 在项目的根目录下创建一个 `CMakeLists.txt` 文件,并添加以下内容: ```cmake cmake_minimum_required(VERSION 3.17) project(TestProject) set(CMAKE_CXX_STANDARD 14) # 添加 Google Test add_subdirectory(lib/googletest) include_directories(include lib/googletest/googletest/include) # 添加测试文件 add_executable(TestProject test/main.cpp) target_link_libraries(TestProject gtest gtest_main) # 添加源文件 add_library(TestLib src/test_lib.cpp) target_include_directories(TestLib PUBLIC include) ``` 在这个文件中,我们首先添加了 Google Test ,然后指定了测试文件 `test/main.cpp` 和源文件 `src/test_lib.cpp`。我们还需要指定头文件的包含路径,这里我们将 `include` 目录添加到了 `TestLib` 的 include 路径中。最后,我们将 `TestProject` 和 `TestLib` 与 Google Test 链接起来。 5. 创建测试文件 在 `test` 目录下创建一个 `main.cpp` 文件,添加以下内容: ```c++ #include "gtest/gtest.h" int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } ``` 这个文件主要是用来初始化 Google Test 框架,并运行所有测试用例。 6. 创建测试用例 在 `test` 目录下创建一个 `test_lib.cpp` 文件,添加以下内容: ```c++ #include "gtest/gtest.h" #include "test_lib.h" TEST(TestLibTest, TestAdd) { TestLib testLib; EXPECT_EQ(testLib.add(2, 3), 5); } TEST(TestLibTest, TestSub) { TestLib testLib; EXPECT_EQ(testLib.sub(5, 3), 2); } ``` 这个文件包含了两个测试用例,分别测试 `TestLib` 类的 `add` 和 `sub` 方法是否正确。 7. 运行测试 在 Clion 中,可以使用 `Run` 按钮来运行测试。在运行前需要在 `Edit Configurations` 中设置好测试的运行方式,比如选择 `Google Test`。运行后,如果所有测试用例都能通过,就表示测试通过了。 以上就是在 Clion 中引入 Google Test 的步骤,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值