C++ 资源整理
关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web 应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
标准库
C++ 标准库,包括了 STL 容器,算法和函数等。 - C++ Standard Library :是一系列类和函数的集合,使用核心语言编写,也是 C++ISO 自身标准的一部分。 - Standard Template Library :标准模板库 - C POSIX library :POSIX 系统的 C 标准库规范 - ISO C++ Standards Committee:C++ 标准委员会
框架
C++ 通用框架和库
Apache C++ Standard Library :是一系列算法,容器,迭代器和其他基本组件的集合
ASL :Adobe 源代码库提供了同行的评审和可移植的 C++ 源代码库。
Boost :大量通用 C++ 库的集合。
BDE :来自于彭博资讯实验室的开发环境。
Cinder :提供专业品质创造性编码的开源开发社区。
Cxxomfort :轻量级的,只包含头文件的库,将 C++ 11 的一些新特性移植到 C++03 中。
Dlib :使用契约式编程和现代 C++ 科技设计的通用的跨平台的 C++ 库。
EASTL :EA-STL 公共部分
ffead-cpp:企业应用程序开发框架
Folly :由 Facebook 开发和使用的开源 C++ 库
JUCE :包罗万象的 C++ 类库,用于开发跨平台软件
libPhenom :用于构建高性能和高度可扩展性系统的事件框架。
LibSourcey :用于实时的视频流和高性能网络应用程序的 C++11 evented IO
LibU : C 语言写的多平台工具库
Loki :C++ 库的设计,包括常见的设计模式和习语的实现。
MiLi :只含头文件的小型 C++ 库
Nebula::高并发、分布式、消息驱动框架
openFrameworks :开发 C++ 工具包,用于创意性编码。
Qt :跨平台的应用程序和用户界面框架
Reason :跨平台的框架,使开发者能够更容易地使用 Java,.Net 和 Python,同时也满足了他们对 C++ 性能和优势的需求。
ROOT :具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。
STLport :是 STL 具有代表性的版本
STXXL :用于额外的大型数据集的标准模板库。
Ultimate++ :C++ 跨平台快速应用程序开发框架
Windows Template Library :用于开发 Windows 应用程序和 UI 组件的 C++ 库
Yomm11 :C++11 的开放 multi-methods
人工智能
btsk :游戏行为树启动器工具
Evolving Objects :基于模板的,ANSI C++ 演化计算库,能够帮助你非常快速地编写出自己的随机优化算法。
Neu :C++11 框架,编程语言集,用于创建人工智能应用程序的多用途软件系统。
异步事件循环
Boost.Asio :用于网络和底层 I/O 编程的跨平台的 C++ 库。
libev :功能齐全,高性能的时间循环,轻微地仿效 libevent,但是不再像 libevent 一样有局限性,也修复了它的一些 bug。
libevent :事件通知库
libuv :跨平台异步 I/O。
音频
音频,声音,音乐,数字化音乐库
生态学
生物信息,基因组学和生物技术
libsequence :用于表示和分析群体遗传学数据的 C++ 库。
SeqAn :专注于生物数据序列分析的算法和数据结构。
Vcflib :用于解析和处理 VCF 文件的 C++ 库
Wham :直接把联想测试应用到 BAM 文件的基因结构变异。
压缩
压缩和归档库
bzip2 :一个完全免费,免费专利和高质量的数据压缩
doboz :能够快速解压缩的压缩库
PhysicsFS :对各种归档提供抽象访问的库,主要用于视频游戏,设计灵感部分来自于 Quake3 的文件子系统。
KArchive :用于创建,读写和操作文件档案(例如 zip 和 tar)的库,它通过 QIODevice 的一系列子类,使用 gzip 格式,提供了透明的压缩和解压缩的数据。
LZ4 :非常快速的压缩算法
LZHAM :无损压缩数据库,压缩比率跟 LZMA 接近,但是解压缩速度却要快得多。
LZMA :7z 格式默认和通用的压缩方法。
LZMAT :及其快速的实时无损数据压缩库
miniz :单一的 C 源文件,紧缩 / 膨胀压缩库,使用 zlib 兼容 API,ZIP 归档读写,PNG 写方式。
Minizip :Zlib 最新 bug 修复,支持 PKWARE 磁盘跨越,AES 加密和 IO 缓冲。
Snappy :快速压缩和解压缩
ZLib :非常紧凑的数据流压缩库
ZZIPlib :提供 ZIP 归档的读权限。
并发性
并发执行和多线程
容器
C++ B-tree :基于 B 树数据结构,实现命令内存容器的模板库
Hashmaps :C++ 中开放寻址哈希表算法的实现
密码学
Bcrypt :一个跨平台的文件加密工具,加密文件可以移植到所有可支持的操作系统和处理器中。
BeeCrypt :
Botan : C++ 加密库
Crypto++ :一个有关加密方案的免费的 C++ 库
GnuPG : OpenPGP 标准的完整实现
GnuTLS :实现了 SSL,TLS 和 DTLS 协议的安全通信库
Libgcrypt- libmcrypt- LibreSSL :免费的 SSL/TLS 协议,属于 2014 OpenSSL 的一个分支
LibTomCrypt :一个非常全面的,模块化的,可移植的加密工具
libsodium :基于 NaCI 的加密库,固执己见,容易使用
Nettle 底层的加密库
OpenSSL :一个强大的,商用的,功能齐全的,开放源代码的加密库。
Tiny AES128 in C :用 C 实现的一个小巧,可移植的实现了 AES128ESB 的加密算法
数据库 ************************************–
数据库,SQL 服务器,ODBC 驱动程序和工具
调试
调试库, 内存和资源泄露检测,单元测试
Boost.Test :Boost 测试库
Catch :一个很时尚的,C++ 原生的框架,只包含头文件,用于单元测试,测试驱动开发和行为驱动开发。
CppUnit :由 JUnit 移植过来的 C++ 测试框架
CTest :CMake 测试驱动程序
googletest :谷歌 C++ 测试框架
ig-debugheap :用于跟踪内存错误的多平台调试堆
libtap :用 C 语言编写测试
MemTrack —用于 C++ 跟踪内存分配
microprofile 跨平台的网络试图分析器
minUnit :使用 C 写的迷你单元测试框架,只使用了两个宏
Remotery :用于 web 视图的单一 C 文件分析器
UnitTest++ :轻量级的 C++ 单元测试框架
游戏引擎
图形用户界面
CEGUI : 很灵活的跨平台 GUI 库
FLTK :快速,轻量级的跨平台的 C++GUI 工具包。
GTK+ : 用于创建图形用户界面的跨平台工具包
gtkmm :用于受欢迎的 GUI 库 GTK + 的官方 C++ 接口。
imgui :拥有最小依赖关系的立即模式图形用户界面
MyGUI :快速,灵活,简单的 GUI
Ncurses :终端用户界面
QCustomPlot :没有更多依赖关系的 Qt 绘图控件
Qwt :用户与技术应用的 Qt 控件
QwtPlot3D :功能丰富的基于 Qt/OpenGL 的 C++ 编程库,本质上提供了一群 3D 控件
PDCurses 包含源代码和预编译库的公共图形函数库
wxWidgets C++ 库,允许开发人员使用一个代码库可以为 widows, Mac OS X,Linux 和其他平台创建应用程序
图形
图像处理
Boost.GIL :通用图像库
CImg :用于图像处理的小型开源 C++ 工具包
CxImage :用于加载,保存,显示和转换的图像处理和转换库,可以处理的图片格式包括 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K。
FreeImage :开源库,支持现在多媒体应用所需的通用图片格式和其他格式。
GDCM :Grassroots DICOM 库
ITK :跨平台的开源图像分析系统
Magick++ :ImageMagick 程序的 C++ 接口
MagickWnd :ImageMagick 程序的 C++ 接口
OpenCV : 开源计算机视觉类库
tesseract-ocr :OCR 引擎
VIGRA :用于图像分析通用 C++ 计算机视觉库
VTK :用于 3D 计算机图形学,图像处理和可视化的开源免费软件系统。
国际化
Json
frozen :C/C++ 的 Json 解析生成器
Jansson :进行编解码和处理 Json 数据的 C 语言库
jbson :C++14 中构建和迭代 BSON data, 和 Json 文档的库
JeayeSON :非常健全的 C++ JSON 库,只包含头文件
JSON++ : C++ JSON 解析器
json-parser :用可移植的 ANSI C 编写的 JSON 解析器,占用内存非常少
json11 :一个迷你的 C++11 JSON 库
jute :非常简单的 C++ JSON 解析器
ibjson :C 语言中的 JSON 解析和打印库,很容易和任何模型集成。
libjson :轻量级的 JSON 库
PicoJSON :C++ 中 JSON 解析序列化,只包含头文件
qt-json :用于 JSON 数据和 QVariant 层次间的相互解析的简单类
QJson :将 JSON 数据映射到 QVariant 对象的基于 Qt 的库
RapidJSON :用于 C++ 的快速 JSON 解析生成器,包含 SAX 和 DOM 两种风格的 API
YAJL :C 语言中快速流 JSON 解析库
CJsonObject :轻量简单的 C++JSOn 解析库,处理多层嵌套十分简单
JSON for Modern C++ :单文件 Json 解析库,无依赖,学习成本非常低
XML
XML 就是个垃圾,xml 的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西完全没有存在的理由了。
-Linus Torvalds
Expat :用 C 语言编写的 xml 解析库
Libxml2 :Gnome 的 xml C 解析器和工具包
libxml++ :C++ 的 xml 解析器
PugiXML :用于 C++ 的,支持 XPath 的轻量级,简单快速的 XML 解析器。
RapidXml :试图创建最快速的 XML 解析器,同时保持易用性,可移植性和合理的 W3C 兼容性。
TinyXML :简单小型的 C++XML 解析器,可以很容易地集成到其它项目中。
TinyXML2 :简单快速的 C++CML 解析器,可以很容易集成到其它项目中。
TinyXML++ :TinyXML 的一个全新的接口,使用了 C++ 的许多许多优势,模板,异常和更好的异常处理。
Xerces-C++ :用可移植的 C++ 的子集编写的 XML 验证解析器。
日志
Boost.Log :设计非常模块化,并且具有扩展性
easyloggingpp :C++ 日志库,只包含单一的头文件。
templog :轻量级 C++ 库,可以添加日志到你的 C++ 应用程序中
glog :Google 日志库,依赖 gflags
Z-Log :纯 C 的 Unix 日志库
spdlog
c-log
syslog-g
EasyLogger
Log4cxx :Apache 日志库,依赖过多,版本太老
Log4cpp :一系列 C++ 类库,灵活添加日志到文件,系统日志,IDSA 和其他地方。
Log4c
Log4Plus
Log4Qt :Log4J 的 Qt 版本,版本过老
spdlog :快速、格式自定义、异步模式、多线程、重定向。
机器学习
数学
多媒体
网络
ACE :C++ 面向对象网络变成工具包
Boost.Asio :用于网络和底层 I/O 编程的跨平台的 C++ 库
Casablanca :C++ REST SDK
cpp-netlib :高级网络编程的开源库集合
Dyad.c :C 语言的异步网络
libcurl : 多协议文件传输库
Mongoose :非常轻量级的网络服务器
Muduo :用于 Linux 多线程服务器的 C++ 非阻塞网络库
net_skeleton :C/C++ 的 TCP 客户端 / 服务器库
nope.c :基于 C 语言的超轻型软件平台,用于可扩展的服务器端和网络应用。对于 C 编程人员,可以考虑 node.js
Onion :C 语言 HTTP 服务器库,其设计为轻量级,易使用。
POCO :用于构建网络和基于互联网应用程序的 C++ 类库,可以运行在桌面,服务器,移动和嵌入式系统。
RakNet :为游戏开发人员提供的跨平台的开源 C++ 网络引擎。
Tuf o :用于 Qt 之上的 C++ 构建的异步 Web 框架。
WebSocket++ :基于 C++/Boost Aiso 的 websocket 客户端 / 服务器库
ZeroMQ :高速,模块化的异步通信库
物理学
动力学仿真引擎
机器人学
科学计算
脚本
ChaiScript :用于 C++ 的易于使用的嵌入式脚本语言。
Lua :用于配置文件和基本应用程序脚本的小型快速脚本引擎。
luacxx :用于创建 Lua 绑定的 C++ 11 API
SWIG :一个可以让你的 C++ 代码链接到 JavaScript,Perl,PHP,Python,Tcl 和 Ruby 的包装器 / 接口生成器
V7 :嵌入式的 JavaScript 引擎。
V8 :谷歌的快速 JavaScript 引擎,可以被嵌入到任何 C++ 应用程序中。
序列化 ************************************–
Cap’n Proto :快速数据交换格式和 RPC 系统。
cereal :C++11 序列化库
FlatBuffers :内存高效的序列化库
MessagePack :C/C++ 的高效二进制序列化库,例如 JSON
protobuf :协议缓冲,谷歌的数据交换格式。
protobuf-c :C 语言的协议缓冲实现
SimpleBinaryEncoding :用于低延迟应用程序的对二进制格式的应用程序信息的编码和解码。
Thrift :高效的跨语言 IPC/RPC,用于 C++,Java,Python,PHP,C# 和其它多种语言中,最初由 Twitter 开发。
视频
虚拟机
CarpVM :C 中有趣的 VM,让我们一起来看看这个。
MicroPython :旨在实现单片机上 Python3.x 的实现
TinyVM :用纯粹的 ANSI C 编写的小型,快速,轻量级的虚拟机。
Web 应用框架 ****************************************************************************—
Civetweb :提供易于使用,强大的,C/C++ 嵌入式 Web 服务器,带有可选的 CGI,SSL 和 Lua 支持。
CppCMS :免费高性能的 Web 开发框架(不是 CMS ).
Crow :一个 C++ 微型 web 框架(灵感来自于 Python Flask)
Kore : 使用 C 语言开发的用于 web 应用程序的超快速和灵活的 web 服务器 / 框架。
libOnion :轻量级的库,帮助你使用 C 编程语言创建 web 服务器。
QDjango :使用 C++ 编写的,基于 Qt 库的 web 框架,试图效仿 Django API,因此得此名。
Wt :开发 Web 应用的 C++ 库。
其他
一些有用的库或者工具,但是不适合上面的分类,或者还没有分类。
C++ Format :C++ 的小型,安全和快速格式化库
casacore :从 aips++ 派生的一系列 C++ 核心库
cxx-prettyprint :用于 C++ 容器的打印库
DynaPDF :易于使用的 PDF 生成库
gcc-poison :帮助开发人员禁止应用程序中的不安全的 C/C++ 函数的简单的头文件。
googlemock :编写和使用 C++ 模拟类的库
HTTP Parser :C 的 http 请求 / 响应解析器
libcpuid :用于 x86 CPU 检测盒特征提取的小型 C 库
libevil :许可证管理器
libusb :允许移动访问 USB 设备的通用 USB 库
PCRE :正则表达式 C 库,灵感来自于 Perl 中正则表达式的功能。
Remote Call Framework :C++ 的进程间通信框架。
Scintilla :开源的代码编辑控件
Serial Communication Library :C++ 语言编写的跨平台,串口库。
SDS :C 的简单动态字符串库
SLDR :超轻的 DNS 解析器
SLRE : 超轻的正则表达式库
Stage :移动机器人模拟器
VarTypes :C++/Qt4 功能丰富,面向对象的管理变量的框架。
ZBar :‘条形码扫描器’库,可以扫描照片,图片和视频流中的条形码,并返回结果。
CppVerbalExpressions :易于使用的 C++ 正则表达式
QtVerbalExpressions :基于 C++ VerbalExpressions 库的 Qt 库
PHP-CPP :使用 C++ 来构建 PHP 扩展的库
Better String :C 的另一个字符串库,功能更丰富,但是没有缓冲溢出问题,还包含了一个 C++ 包装器。
软件
用于创建开发环境的软件
编译器
C/C++ 编译器列表
Clang : 由苹果公司开发的
GCC :GNU 编译器集合
Intel C++ Compiler :由英特尔公司开发
LLVM :模块化和可重用编译器和工具链技术的集合
Microsoft Visual C++ :MSVC,由微软公司开发
Open WatCom :Watcom,C,C++ 和 Fortran 交叉编译器和工具
TCC :轻量级的 C 语言编译器
在线编译器
在线 C/C++ 编译器列表
codepad :在线编译器 / 解释器,一个简单的协作工具
CodeTwist :一个简单的在线编译器 / 解释器,你可以粘贴的 C,C++ 或者 Java 代码,在线执行并查看结果
coliru :在线编译器 / shell,支持各种 C++ 编译器
Compiler Explorer :交互式编译器,可以进行汇编输出
CompileOnline :Linux 上在线编译和执行 C++ 程序
Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持 60 多种编程语言。
调试器
C/C++ 调试器列表 - Comparison of debuggers :来自维基百科的调试器列表 - GDB :GNU 调试器 - Valgrind :内存调试,内存泄露检测,性能分析工具。
集成开发环境(IDE)
C/C++ 集成开发环境列表
AppCode :构建与 JetBrains IntelliJ IDEA 平台上的用于 Objective-C,C,C++,Java 和 Java 开发的集成开发环境
CLion :来自 JetBrains 的跨平台的 C/C++ 的集成开发环境
Code::Blocks :免费 C,C++ 和 Fortran 的集成开发环境
CodeLite :另一个跨平台的免费的 C/C++ 集成开发环境
Dev-C++ :可移植的 C/C++/C++11 集成开发环境
Eclipse CDT :基于 Eclipse 平台的功能齐全的 C 和 C++ 集成开发环境
Geany :轻量级的快速,跨平台的集成开发环境。
IBM VisualAge :来自 IBM 的家庭计算机集成开发环境。
Irony-mode :由 libclang 驱动的用于 Emacs 的 C/C++ 微模式
KDevelop :免费开源集成开发环境
Microsoft Visual Studio :来自微软的集成开发环境
NetBeans :主要用于 Java 开发的的集成开发环境,也支持其他语言,尤其是 PHP,C/C++ 和 HTML5。
Qt Creator :跨平台的 C++,Javascript 和 QML 集成开发环境,也是 Qt SDK 的一部分。
rtags :C/C++ 的客户端服务器索引,用于跟基于 clang 的 emacs 的集成
Xcode :由苹果公司开发
YouCompleteMe :一个用于 Vim 的根据你敲的代码快速模糊搜索并进行代码补全的引擎。
构建系统
静态代码分析
提高质量,减少瑕疵的代码分析工具列表
Cppcheck :静态 C/C++ 代码分析工具
include-what-you-use :使用 clang 进行代码分析的工具,可以 #include 在 C 和 C++ 文件中。
OCLint :用于 C,C++ 和 Objective-C 的静态源代码分析工具,用于提高质量,减少瑕疵。
Clang Static Analyzer :查找 C,C++ 和 Objective-C 程序 bug 的源代码分析工具
List of tools for static code analysis :来自维基百科的静态代码分析工具列表