正文
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
目录
标准库
C++标准库,包括了STL容器,算法和函数等。
框架
C++通用框架和库
人工智能
异步事件循环
- Asio: 用于网络和底层I/O编程的跨平台 C++ 库,使用现代 C++ 方法为开发者提供一致的异步模型。
音频
音频,声音,音乐,数字化音乐库
生态学
生物信息,基因组学和生物技术
比特流
化学
化学,地球化学,生物化学
- d-SEAMS: 具有Nix的C++和Lua实现的分子动力学轨道分析引擎,它是分子模拟的递延结构分析的首字母缩写。
- gromacs: 传递消息的并行分子动力学实现。
- Reaktoro: C++和python中用于对化学反应系统进行建模的计算框架。
- LAMMPS: 经典的用于材料建模的分子动力学代码,它是大范围原子/分子巨量平行模拟器的首字母缩写。
命令行界面
控制台/终端用户界面,命令行界面
压缩
压缩和归档库
- bit7z: C++静态库,提供与7-zip DLLs的简洁接口。
- Brotli: Brotli压缩格式,由Google开发。
- bzip2: 一个完全免费,免费专利和高质量的数据压缩。
- FiniteStateEntropy: 新一代熵编解码器: 有限状态熵和Huff()。
- PhysicsFS: 对各种归档提供抽象访问的库,主要用于视频游戏,设计灵感部分来自于Quake3的文件子系统。
- KArchive: 用于创建,读写和操作文件档案(例如zip和 tar)的库,它通过QIODevice的一系列子类,使用gzip格式,提供了透明的压缩和解压缩的数据。
- libarchive: 多格式的存档和压缩库。
- LZ4: 非常快速的压缩算法。
- LZFSE: LZFSE压缩库和命令行工具。
- LZHAM: 无损压缩数据库,压缩比率跟LZMA接近,但是解压缩速度却要快得多。
- LZMA: 7z格式默认和通用的压缩方法。
- LZMAT: 极其快速的实时无损数据压缩库。
- miniz: 单一的C源文件,紧缩/膨胀压缩库,使用zlib兼容API,ZIP归档读写,PNG写方式。
- Minizip: Zlib最新bug修复,支持PKWARE磁盘跨越,AES加密和IO缓冲。
- smaz: 小型字符压缩库。
- Snappy: 快速压缩和解压缩。
- ZLib: 非常紧凑的数据流压缩库。
- zlib-ng: 用于“下一代”系统的zlib,将一些重要的优化进行嵌入式替换。
- zstd: Zstandard-快速实时压缩算法。由Facebook开发。
- ZZIPlib: 提供ZIP归档的读权限。
并发性
并发执行和多线程
配置
配置文件,INI文件
容器
密码学
密码学和加密库
CSV
用于解析逗号分隔值(CSV)文件的库
数据库
数据库,SQL服务器,ODBC驱动程序和工具
调试
调试库, 内存和资源泄露检测,单元测试
字体
解析和处理字体文件的库。
游戏引擎
- Acid: 高速的C++17 Vulkan游戏引擎。
- Allegro: 主要用于视频游戏和多媒体编程的跨平台库。
- Cocos2d-x: 用于构建2D游戏、交互式书籍、演示和其它图形应用程序的多平台框架。
- Corange: 用纯C、SDL、OpenGL编写的游戏引擎。
- Crown: Crown是一款通用的数据驱动游戏引擎,使用正统C++从零开始编写,并牢记简约和面向数据的设计理念。
- delta3d: 健壮的仿真平台。
- EnTT: 游戏与现代C++的碰撞。
- GamePlay: 用于创建2D/3D移动和桌面游戏的跨平台本机C++游戏框架。
- Godot: 功能齐全、开源、有MIT许可的游戏引擎。
- Grit: 社区项目,用于构建一个免费的游戏引擎,实现开放的世界3D游戏。
- Halley: 用C++14编写的轻量级游戏引擎,带有“真实的”实体组件系统。
- KlayGE: 具有基于插件架构的跨平台、开源的游戏引擎。
- nCine: 注重性能的跨平台2D游戏引擎,用C++11编写,还可以选择使用Lua编写脚本。
- OpenXRay: 在S.T.A.L.K.E.R.游戏系列中使用的社群修改的X射线引擎。
- Oxygine: 跨平台的2D C++游戏引擎。
- Panda3D: 游戏引擎,用于Python和C++程序的3D渲染和游戏开发的框架。
- PixelGameEngine: olcPixelGameEngine的官方发行版,该工具用于javidx9的YouTube视频和项目。
- Polycode: C++实现的用于创建游戏的开源框架(与Lua绑定)。
- raylib: 简单、易于使用的库,用于享受视频游戏编程的乐趣。
- Spring: 强大、免费、跨平台的RTS游戏引擎。
- Torque2D: 为2D游戏开发构建的开源、跨平台C++引擎。
- Torque3D: 为3D游戏开发构建的开源C++引擎。
- toy engine: toy是一个轻量的模块化的 C++ 游戏引擎,并提供简单的、有表现力的C++惯用法来快速迭代设计功能齐全的2D和3D游戏。
- Urho3D: C++实现的免费、轻量级、跨平台的2D和3D游戏引擎,受到OGRE和Horde3D很大的启发。
图形用户界面
图形用户界面
- Boden: 本机、移动、跨平台的GUI框架。
- CEGUI: 灵活的跨平台GUI库。
- Elements: 轻量级、细粒度、分辨率无关的模块化GUI库。
- FLTK: 快速,轻量级的跨平台的C++GUI工具包。
- GacUI: GPU加速的C++用户界面,具有所见即所得的开发工具,支持XML,具有内置数据绑定和MVVM功能。
- GTK+: 用于创建图形用户界面的多平台工具包。
- gtkmm: 用于受欢迎的GUI库GTK+的官方C++接口。
- imgui: 拥有最小依赖关系的即时模式图形用户界面。
- implot: imgui的即时模式绘图控件。
- iup: 构建图形用户界面的多平台工具包。
- libui: C中简单、可移植(但是不灵活)的GUI库,使用其支持的每一种平台的本机GUI技术。
- MyGUI: 快速,灵活,简单的GUI。
- nana: Nana是现代C++风格的GUI编程的跨平台库。
- NanoGui: 简约、跨平台的控件库,用于OpenGL 3.x及更高版本。
- nuklear: 单个头文件的ANSI C gui库。
- QCustomPlot: 没有更多依赖关系的Qt绘图控件。
- Qwt: 用户与技术应用的Qt 控件。
- QwtPlot3D: 功能丰富的基于Qt/OpenGL的C++编程库,本质上提供了一群3D控件。
- RmlUi: 进化的HTML/CSS用户界面库,libRocket的分支。
- Sciter: Sciter是可嵌入的HTML/CSS/脚本语言引擎,旨在用于现代桌面应用程序的UI层。
- wxWidgets C++库,允许开发人员使用一个代码库可以为widows, Mac OS X,Linux和其他平台创建应用程序。
- Yue: 创建本机跨平台GUI应用的库。
图形
图像处理
- Boost.GIL: 通用图像库。
- CImg: 用于图像处理的小型开源C++工具包。
- CxImage: 用于加载,保存,显示和转换的图像处理和转换库,可以处理的图片格式包括 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K。
- Dlib: 现代C++11的机器学习、计算机视觉、数值优化和深度学习工具包。
- FreeImage: 开源库,支持现在多媒体应用所需的通用图片格式和其他格式。
- GD: GD图形库,有名的用于PHP中图形加载/操作和缩略图生成。
- DCMTK: DICOM工具包。
- GDCM: Grassroots DICOM 库。
- ITK: 跨平台的开源图像分析系统。
- Leptonica: Leptonica是一个包含软件的开源库,其广泛应用于图像处理和图形分析应用程序。
- libfacedetection: 用于图像中人脸检测的开源库,其人脸检测的速度能达到1500FPS。
- libjpeg-turbo: 使用SIMD指令来加速基线JPEG编码和解码的JPEG图像编解码器。
- libvips: 具有低内存需求的快速图像处理库。
- Magick++: ImageMagick程序的C++接口。
- MagickWnd: ImageMagick程序的C++接口。
- OpenCV: 开源计算机视觉类库。
- OpenEXR: 具有高动态范围成像的跨平台库。
- OpenImageIO: 强大的图像和纹理处理库,支持多种常见的有损和RAW格式。
- Simd: 使用SIMD的C++图像处理库: SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX(Altivec)和VSX(Power7),NEON for ARM。
- stb-image: STB单个头文件的图像加载库。
- tesseract-ocr: OCR引擎。
- TinyEXIF: 用于JPEG的微型ISO兼容的C++ EXIF和XMP解析库。
- Video++: C++ 14高性能的视频和图像处理库。
- VIGRA: 用于图像分析通用C++计算机视觉库。
- VTK: 用于3D计算机图形学,图像处理和可视化的开源免费软件系统。
国际化
进程间通信
- Apache Thrift: 高效的跨语言IPC/RPC,可在C++、Java、Python、PHP、C#和许多其它语言之间运行。最初是由Facebook开发。
- Cap'n Proto: 快速的数据交换格式和基于功能的RPC系统。
- eCAL: 发布/订阅,客户端/服务器,C++/Python/C#,各种消息协议(protobuf, capnproto ..)。
- gRPC: 高性能、开源、通用的RPC框架。
- Ice: 全面的RPC框架,支持C++、C#、Java、JavaScript、Python等。
- libjson-rpc-cpp: 用于C++服务器和客户端的JSON-RPC框架。
- nanomsg: 好几个“可扩展协议”的简单高性能实现。
- nng: nanomsg的下一代,轻量级、无代理消息的传递库。
- rpclib: 现代C++的msgpack-RPC服务器和客户端库。
- simple-rpc-cpp: C / C++函数的简单RPC封装生成器。
- WAMP: 提供RPC和发布/订阅消息传递模式。(各种实现,各种语言)
- xmlrpc-c: 基于XML和HTTP的轻量级RPC库。
Json
日志
机器学习
- Caffe: 快速的神经网络框架。
- CCV: 基于C /缓存/核心的计算机视觉库,现代计算机视觉库。
- darknet: 用C和CUDA编写的开源神经网络框架。
- Dlib: 现代C++ 11的机器学习、计算机视觉、数值优化和深度学习的工具包。
- Fido: 用于嵌入式电子和机器人技术的高度模块化的C++机器学习库。
- flashlight: 来自Facebook AI研究中心的快速、灵活的机器学习库,其完全用C++编写,基于ArrayFire张量库。
- libsvm: 支持向量机的简单、易用、高效的库。
- MeTA: 现代C++的数据科学工具包。
- Minerva: 快速、灵活的深度学习系统。
- mlpack: 可扩展的C++机器学习库。
- OpenCV: 开源计算机视觉库。
- Recommender: 使用协同过滤进行产品推荐/建议的C语言库。
- RNNLIB: RNNLIB是用于序列学习问题的递归神经网络库。
- SHOGUN: Shogun 机器学习工具。
- sofia-ml: 用于机器学习的快速增量算法套件。
- VLFeat: VLFeat开源库实现了流行的计算机视觉算法,这些算法专门用于图像理解以及局部特征提取和匹配。
- xgboost: 用于Python、R、Java、Scala、C++等的可扩展、便携式和分布式梯度增强(GBDT,GBRT或GBM)的库。在单机、Hadoop、Spark、Flink和DataFlow上运行。
数学
- Apophenia: 用于统计和科学计算的C库。
- Armadillo: 用于线性代数和科学计算的快速C++库。
- autodiff: 用于自动微分的现代、快速且富有表现力的C++库。
- blaze: 高性能的C++数学库,用于密集和稀疏算法。
- Boost.Multiprecision: 在C++中提供更高范围/精度的整数、有理数和浮点数类型,只包含头文件或者在GMP / MPFR / LibTomMath后端。
- ceres-solver: 来自谷歌的C++库,用于建模和解决大型复杂非线性最小平方问题。
- CGAL: 高效,可靠的几何算法集合。
- cml: 用于游戏和图形的免费C++数学库。
- Dlib: 现代C++11的机器学习、计算机视觉、数值优化和深度学习工具包。
- Eigen: 高级C++模板头文件库,包括线性代数,矩阵,向量操作,数值解决和其他相关的算法。
- ExprTK: C++数学表达式工具包库(ExprTk)是一个易于使用、易于集成且非常高效的运行时数学表达式解析器和评估引擎。
- Geometric Tools: 用于数学、图形、图像分析和物理学领域计算的C++库。
- GLM: 只包含头文件的C++数学库,可与OpenGL的GLSL数学匹配并互操作。
- GMTL: 数学图形模板库是一组广泛实现基本图形的工具。
- GMP: 用于个高精度计算的C/C++库,处理有符号整数,有理数和浮点数。
- Klein: 快速、SIMD优化的C++ 17几何代数库,用于点、线和平面投影、相交、连接、刚体运动等。
- linalg.h: C++的单头文件、公共域、短向量数学库。
- MIRACL: 多精度整数和有理数算法加密库。
- muparser: muParser是用C++编写的可扩展、高性能的数学表达式解析库。
- LibTomMath: 完全用C编写的免费、开源、可移植的数论多精度整数库。
- linmath.h: 精益线性数学库,主要用于图形编程。
- lp_solve: 用于制定和解决线性编程问题的库。
- OpenBLAS: 基于GotoBLAS2 1.13 BSD版本的优化BLAS库。
- QuantLibv: 用于计量金融的免费/开源库。
- StatsLib: 统计分布函数的C++库,只包含头文件。
- SymEngine: 快速符号处理库,用C++重写了SymPy的核心。
- TinyExpr: 用于解析和评估字符串中的数学表达式的C库。
- Vc: C++的SIMD矢量类。
- Versor: (快速的)几何代数的通用C++库,包括欧几里得、投影,保角、时空等。
- Wykobi: 高效、健壮且易于使用的C++库,面向C++ 2D / 3D的计算几何例程。
- xtensor: 受NumPy语法启发的C++ 14库,用于使用多维数组表达式进行数值分析。
- universal: 只包含头文件的C++ 14库,实现任意假定算数。假定数值系统是一个锥形浮点,比IEEE浮点更有效。假定数使可复现的计算科学成为可能。
内存分配
多媒体
网络
PDF
解析和处理PDF文档的库。
- libharu: 免费、跨平台、开源的软件库,用于生成PDF。
- litePDF: 创建和编辑PDF文档的库,它通过设备上下文使用GDI功能来绘制页面内容。
- MuPDF: 轻量级的PDF、XPS和电子书查看器。
- PoDoFo: 使用PDF文件格式的库。
- Poppler: 基于xpdf-3.0代码库的开源、多后端的PDF渲染库。
- Xpdf: Xpdf是一款免费的PDF查看器和工具包,包括文本提取器、图像转换器、HTML转换器等。
- DynaPDF: 易于使用的PDF生成库。
物理学
动力学仿真引擎
映射
正则表达式
- CppVerbalExpressions: C++正则表达式专家。
- CTRE: 编译时PCRE(几乎)兼容的正则表达式匹配器。
- Hyperscan: Hyperscan是Intel的高性能、多种正则表达式匹配库,提供大量正则表达式(多达数万个)的同时匹配,通常在DPI库堆栈中使用。
- Oniguruma: 现代且灵活的正则表达式库,支持多种字符编码。
- PCRE: 受Perl中正则表达式功能启发的正则表达式C库。
- PIRE: Yandex的Perl不兼容正则表达式库,可以非常快(超过400 MB / s)。
- RE2: 使用自动机理论、通过有限状态机进行的正则表达式软件库。
- SLRE: 适用于C / C++的超轻正则表达式引擎。
- sregex: 基于NFA / DFA的Perl兼容的正则表达式引擎库,不可回溯,可与大型数据流进行匹配。
机器人学
科学计算
- AMGCL: 只包含头文件的C++库,用于解决具有代数多重网格的大型稀疏线性系统。
- FFTW: 用一维或者多维计算DFT的C语言库。
- GSL: GNU科学库。
- TileDB: 快速密集和稀疏多维数组的DBMS。
- Trilinos: 高性能的PDE解算器。
- Torch: 科学的计算框架,广泛支持将GPU放在首位的机器学习算法。
脚本
- AngelScript: AngelScript是一种面向游戏的解释/编译脚本语言。
- Boost.Python: 可实现C++和Python编程语言之间的无缝互操作性的C++库。
- cppimport: 直接从Python导入C++文件!
- CppSharp: 用于将C / C++ API融合到高级语言中的工具和库。
- ChaiScript: 用于C++的易于使用的嵌入式脚本语言。
- ctypes.sh: bash的外部函数接口。
- Cython: Cython是用于Python编程语言和扩展的Cython编程语言(基于Pyrex)的优化静态编译器。它使得为Python编写C扩展就像Python本身一样容易。
- djinni: 生成跨语言类型声明和接口绑定的工具。
- Duktape: 具有紧凑脚本的嵌入式Javascript引擎。
- JavaCpp: Java和本机C++之间缺少的桥梁。
- libffi: 可移植的外部功能接口库。
- Lua: 用于配置文件和基本应用程序脚本的小型快速脚本引擎。
- LuaBridge: 轻量级、无依赖的库,用于将Lua绑定到C++。
- luacxx: 用于创建Lua绑定的C++ 11 API。
- nbind: 神奇的头文件,使您的C++库可从JavaScript进行访问。
- PHP-CPP: 使用C++构建PHP扩展的库。
- pybind11: C++ 11和Python之间的无缝可操作性。
- SIP: 用于Python v2和v3的C或C++绑定生成器。
- sol2: 具有高级功能和一流性能的C++ <-> Lua API封装器。
- SWIG: 一个可以让你的C++代码链接到JavaScript,Perl,PHP,Python,Tcl和Ruby的包装器/接口生成器。
- V7: 嵌入式的JavaScript 引擎。
- V8: 谷歌的快速JavaScript引擎,可以被嵌入到任何C++应用程序中。
- ChakraCore: Microsoft的JavaScript引擎,可以嵌入到nodejs中。
序列化
排序
- pdqsort: 破坏模式的快速排序。
- Timsort: 模板化的稳定排序功能,其性能优于基于快速排序的算法(包括std: : sort),用于反向或半排序数据。
视频
虚拟机
Web应用框架
- Civetweb: 提供易于使用,强大的,C/C++嵌入式Web服务器,带有可选的CGI,SSL和Lua支持。
- C++ REST SDK: 使用现代异步C++ API设计、以本机代码进行基于云的客户端-服务器通信的Microsoft项目。
- CppCMS: 免费高性能的Web开发框架(不是 CMS).。
- Crow: 一个C++微型web框架(灵感来自于Python Flask)。
- Cutelyst: 在Qt上构建的C++ Web框架,使用Catalyst(Perl)框架的简单方法。
- Drogon: 基于C++ 14/17的高性能HTTP应用程序框架。
- facil.io: 事件型、高性能的C Web框架,支持HTTP、WebSocket、SSE等。
- Kore: 使用C语言开发的用于web应用程序的超快速和灵活的web服务器/框架。
- libOnion: 轻量级的库,帮助你使用C编程语言创建web服务器。
- lwan: 实验性、可扩展的高性能HTTP服务器。
- oat++: 轻量、零依赖的框架,可创建高性能的Web服务。
- Pistache: Pistache是一个用纯C++ 11编写的C++ REST框架,没有外部依赖性。
- QDjango: 使用C++编写的,基于Qt库的web框架,试图效仿Django API,因此得此名。
- TreeFrog Framework: 基于C++和Qt的高速、全栈的Web应用程序框架,支持HTTP和WebSocket协议(带有O / R映射)。
- Wt: 开发Web应用的C++库。
XML
XML就是个垃圾,xml的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西完全没有存在的理由了。-Linus Torvalds
多项混杂
一些有用的库或者工具,但是不适合上面的分类,或者还没有分类。
软件
用于创建开发环境的软件
编译器
C/C++编译器列表
在线编译器
在线C/C++编译器列表
调试器
C/C++调试器列表
集成开发环境
C/C++集成开发环境列表
构建系统
- Bazel: Google提供的多语言、快速且可扩展的构建系统。
- Bear: 用于为clang工具生成编译数据库的工具。
- Buck: 用Java编写的快速构建系统,可鼓励在多种平台和语言(包括在Facebook开发和使用的C++)上创建小型、可重用模块。
- clib: C语言的软件包管理器。
- Biicode: 基于文件的简单依赖管理器。
- CMake: 跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。
- Cget: Cmake软件包检索。
- Conan: C / C++程序包管理器,开源的。
- CPM: 基于CMake和Git的C++包管理器。
- FASTBuild: 高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。
- Hunter: CMake驱动的C++跨平台软件包管理器。
- MesonBuild: 开源构建系统,它意味着不仅要非常快,而且更重要的是要尽可能地方便用户使用。
- Ninja: 专注于速度的小型构建系统。
- Scons: 使用Python scipt 配置的软件构建工具。
- Sconsolidator: 用于Eclipse CDT的Scons构建系统集成。
- Spack: 灵活的软件包管理器,支持多个版本、配置、平台和编译器。
- SW: 跨平台的C++(和其他语言)构建系统和程序包管理器,其中包含许多可用程序包。
- tundra: 高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。
- tup: 基于文件的构建系统,用于后台监控变化的文件。
- Premake: 配置有Lua脚本的工具,可以在Windows、Mac OS X和Linux上为Visual Studio、GNU Make、Xcode、Code::Blocks等生成项目文件。
- Vcpkg: Windows,Linux和MacOS的C++库管理器。
- waf: 用于配置、编译和安装应用程序的基于Python的框架。
- XMake: 基于Lua的C / C++的跨平台构建实用程序。
静态代码分析
提高质量,减少瑕疵的代码分析工具列表
编码样式工具
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注