C++ 資源大全中文版
awesome-cpp 就是fffaraz發起維護的C++ 資源列表,內容包括: 標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日誌、代碼分析等。
中文版由开源前哨和CPP开发者微信公號團隊維護更新,在GitHub 已有近4400 Star ,歡迎在Github 上關注。
本項目的參與者
注: 名單不分排名,不定期補充更新
目錄
- 標準庫
- 框架
- 人工智慧
- 異步事件循環
- 音頻
- 生態學
- 壓縮
- 並發性
- 容器
- 密碼學
- 資料庫
- 偵錯
- 遊戲引擎
- 圖形用戶界面
- 圖形
- 圖像處理
- 國際化
- Json
- 紀錄
- 機器學習
- 數學
- 多媒體
- 網絡
- 物理學
- 機器人學
- 科學計算
- 腳本
- 序列化
- 影片
- 虛擬機
- Web應用框架
- XML
- 多項混雜
- 軟體
- 編譯器
- 在線編譯器
- 偵錯工具
- 集成開發環境
- 構建系統
- 靜態代碼分析
標準庫
C++標準庫,包括了STL容器,算法和函數等。
- C++ Standard Library: 是一系列類和函數的集合,使用核心語言編寫,也是C++ISO自身標準的一部分。
- Standard Template Library: 標準模板庫。
- C POSIX library: POSIX系統的C標準庫規範。
- ISO C++ Standards Committee: C++標準委員會。
- The GNU C Library: 本手冊的目的是告訴你如何使用GNU C庫。
框架
C++通用框架和庫
- abseil-cpp: Abseil C++ 通用庫。
- Apache C++ Standard Library: 是一系列算法,容器,迭代器和其他基本組件的集合。
- APR: Apache可移植運行時庫。另一個跨平台的庫。
- ASL: Adobe源代碼庫提供了同行的評審和可移植的C++ 源代碼庫。
- Boost: 大量通用C++ 庫的集合。
- BDE: 來自於彭博資訊實驗室的開發環境。
- Cinder: 提供專業品質創造性編碼的開源開發社區。
- CO - C++基礎庫,包含go-style 協程庫,日誌庫, JSON庫, RPC 框架以及其他基本組件。
- Cxxomfort: 輕量級的,只包含頭文件的庫,將C++ 11的一些新特性移植到C++03中。
- Dlib: 使用契約式編程和現代C++ 科技設計的通用的跨平台的C++ 庫。
- EASTL: EA-STL公共部分。
- ETL: 嵌入式模板庫。
- ffead-cpp: 企業應用程序開發框架。
- Folly: 由Facebook開發和使用的開源C++庫。
- FunctionalPlus: C++ 的函數式編程庫,編寫簡潔易讀的C++代碼。
- GLib: GLib提供用C編寫的庫和應用的核心代碼塊。
- JUCE: 包羅萬象的C++類庫,用於開發跨平台軟件。
- Kigs framework: C++免費開源的模塊化、多功能、跨平台的RAD框架。
- libPhenom: 用於構建高性能和高度可擴展性系統的事件框架。
- LibSourcey: 用於實時的視頻流和高性能網絡應用程序的C++11 evented IO。
- LibU: C語言寫的多平台工具庫。
- Loki: C++庫的設計,包括常見的設計模式和習語的實現。
- MiLi: 只含頭文件的小型C++庫。
- openFrameworks: 開發C++工具包,用於創意性編碼。
- Qt: 跨平台的應用程序和用戶界面框架。
- Reason: 跨平台的框架,使開發者能夠更容易地使用Java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。
- ROOT: 具備所有功能的一系列面向對象的框架,能夠非常高效地處理和分析大量的數據,為歐洲原子能研究機構所用。
- STLport: 是STL具有代表性的版本。
- STXXL: 用於額外的大型數據集的標準模板庫。
- tbox: 類似於glib的多平台C庫。
- Ultimate++: C++跨平台快速應用程序開發框架。
- uSTL: 小型STL庫。
- Windows Template Library: 用於開發Windows應用程序和UI組件的C++庫。
- Yomm2: 快速的、正交的、開放的multi-methods,取代Yomm11。
人工智慧
- ANNetGPGPU: 基於GPU(CUDA)的人工神經網絡庫。
- btsk: 遊戲行為樹啟動器工具。
- Evolving Objects: 基於模板的,ANSI C++演化計算庫,能夠幫助你非常快速地編寫出自己的隨機優化算法。
- frugally-deep: 使用Keras模型的C++庫,只有頭文件。
- Genann: 簡單的神經網絡C庫。
- MXNet: 輕量級、便攜、靈活的分佈式/移動深度學習,具有動態、可感知突變的數據流管理調度程序。適用於Python、R、Julia、Scala、Go、Javascript和更多網站。
- PyTorch: 具有強大CPU加速功能,包含張量和動態神經網絡的Python庫。
- Recast/Detour: (3D)導航網格生成器和路徑查找,主要用於遊戲。
- TensorFlow: 使用數據流圖進行數值計算的開源軟件庫。
- CNTK: Microsoft Cognitive Toolkit (CNTK),開源的深度學習工具庫。
- tiny-dnn: C++11中的無依賴項的深度學習框架,只有頭文件。
- Veles: 用於快速深度學習應用開發的分佈式平台。
- Kaldi: 語音識別工具包。
異步事件循環
- Asio: 用於網絡和底層I/O編程的跨平台C++ 庫,使用現代C++ 方法為開發者提供一致的異步模型。
- Boost.Asio: 用於網絡和底層I/O編程的跨平台的C++ 庫。
- C++ Actor Framework: C++中Actor Model的開源實現。
- libev: 功能齊全,高性能的時間循環,輕微地仿效libevent,但是不再像libevent一樣有局限性,也修復了它的一些bug。
- libevent: 事件通知庫。
- libhv: 跨平台的事件循環庫。
- libuv: 跨平台異步I/O。
- promise-cpp: 實現Promise/A+標準的庫,只有頭文件。
- uvw: libuv的C++封裝器。
音頻
音頻,聲音,音樂,數字化音樂庫
- AudioFile: 用於讀寫音頻文件的簡單C++庫。
- FMOD: 易於使用的跨平台的音頻引擎和音頻內容的遊戲創作工具。
- KFR: 快速、現代的C++ DSP框架,FFT、FIR/IIR濾波器,和採樣率轉換。
- LAME: LAME是高質量MPEG音頻第三層(MP3)編碼器。
- libsndfile: C++封裝的C庫,用於通過標準庫接口讀寫包含採樣聲音的文件。
- libsoundio: 用於跨平台實時音頻輸入輸出的C庫。
- Maximilian: C++音頻和音樂數字信號處理庫。
- OpenAL: 開源音頻庫---跨平台的音頻API。
- miniaudio: 單文件音頻回放和錄製的庫。
- Opus: 一個完全開放的,免版稅的,高度通用的音頻編解碼器。
- PortAudio: 免費的、跨平台的、開源的音頻I/O庫。
- SELA: SimplIE無損音頻。
- SoLoud: 簡單便攜的遊戲音頻引擎。
- Speex: 免費編解碼器,為Opus所廢棄。
- Tonic: C++易用和高效的音頻合成。
- Vorbis: Ogg Vorbis是一種完全開放的,非專有的,免版稅的通用壓縮音頻格式。
- minimp3: 公共域,無塵室實現的MP3解碼器,只有頭文件。
- Verovio: 快速、輕量級的音樂符號雕刻庫。
- Wav2Letter++: 公共域,完全用C++編寫的快速開放源代碼的語音處理庫,同時使用ArrayFire張量庫和flashlight機器學習庫來實現最高的效率。
生態學
生物信息,基因組學和生物技術
BioC++: 生物信息學的C++計算庫。
Chaste: 開放源代碼的C++庫,用於為生理學和生物學開發的數學模型的計算仿真。
libsequence: 用於表示和分析群體遺傳學數據的C++庫。
SeqAn: 專注於生物數據序列分析的算法和數據結構。
Vcflib: 用於解析和處理VCF文件的C++庫。
Wham: 直接把聯想測試應用到BAM文件的基因結構變異。
比特流
- jech/dht: C實現的比特流分佈式哈希表庫。
- libtorrent(aka libtorrent-rasterbar): 高效的、功能完整的C++比特流實現。
- LibTorrent (aka libtorrent-rakshasa): 比特流庫。
- libutp: uTorrent傳輸協議庫。
化學
化學,地球化學,生物化學
- d-SEAMS: 具有Nix的C++和Lua實現的分子動力學軌道分析引擎,它是分子模擬的遞延結構分析的首字母縮寫。
- gromacs: 傳遞消息的並行分子動力學實現。
- Reaktoro: C++和python中用於對化學反應系統進行建模的計算框架。
- LAMMPS: 經典的用於材料建模的分子動力學代碼,它是大範圍原子/分子巨量平行模擬器的首字母縮寫。
命令行界面
控制台/終端用戶界面,命令行界面
- Argh!: 極簡的只有頭文件的參數處理程序。
- Taywee / args: 簡單的只有頭文件的C++參數解析庫。
- Boost.Program_options: 通過常見的方法,例如命令行和配置文件,來獲取程序選擇項的庫。
- Clara: 用於C++11及更高版本的易於使用、可組合的命令行解析器。
- cli: 用於交互式命令行界面的跨平台的C++14庫,只有頭文件。
- CLI11: 單文件或多文件的C++11庫,用於簡單和高級的CLI解析,只有頭文件。
- jarro2783/cxxopts: 輕量級的C++命令行選項解析器。
- docopt.cpp: 從文檔字符串生成選項解析的庫。
- gflags: C++的命令行標誌模塊。
- indicators: 現代C++的活動指標。
- linenoise: readline和libedit的獨立小選擇。
- linenoise-ng: 用於Linux、Windows和MacOS的小型便攜式GNU readline替換,它能夠處理UTF-8字符。
- Lyra: 易於使用的、可組合的命令行解析器,適用於C++11及更高版本。
- Ncurses: 終端用戶界面。
- PDCurses: 具有源代碼和預編譯庫的公共域curses庫。
- replxx: 支持UTF-8、語法高亮、提示的readline和libedit替換,可在Unix和Windows上工作。
- tabulate: 現代C++的表格製作工具。
- TCLAP: 用於在ANSI C++中定義和訪問命令行參數的成熟、穩定、功能多樣的庫。
- termbox: 用於編寫基於文本的用戶界面的C庫。
壓縮
壓縮和歸檔庫
- 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歸檔的讀權限。
並發性
並發執行和多線程
- alpaka: 並行內核加速的抽像庫。
- ArrayFire: 通用GPU庫。
- Async++: C++ 11 的輕量級並行框架,受Microsoft PPL庫和N3428 C++標準提案啟發。
- Boost.Compute: 用於OpenCL的C++GPU計算庫。
- Bolt: 針對GPU進行優化的C++模板庫。
- ck: 並發基元,安全內存回收機制和非阻塞數據結構。
- concurrentqueue: C++11的快速多生產者、多消費者的無鎖並發隊列。
- Cpp-Taskflow: 具有任務依賴性的快速C++並行編程。
- CUB: CUB為CUDA編程模式的每一層提供了最新的可重用軟件組件。
- cuda-api-wrappers: 輕量級的現代C++封裝器,用於CUDA GPU的運行時API編程。
- cupla: 通過Alpaka在OpenMPA、線程、TBB……運行CUDA/C++的C++ API。
- C++React: 用於C++11的反應性編程庫。
- FiberTaskingLib: 基於任務的多線程庫,支持具有任意依賴關係的任務圖表。
- HPX: 適用於任何規模的並行分佈式應用的通用C++運行時系統。
- Intel Games Task Scheduler: 為了遊戲開發者的需要而設計的任務調度框架。
- Intel Parallel STL: C++ 17 STL的英特爾實現,適用於C++11及更高版本。
- Intel TBB: 英特爾線程構建模塊。
- junction: 並發數據結構的C++庫。
- Kokkos: 用於並行運行和內存抽象的便攜式編程模型。
- libcds: 並行數據結構的C++庫。
- Libclsph: 基於OpenCL的GPU加速SPH流體仿真庫。
- libmill: 在C中引入結構並發性。
- libdispatch: Apple公司開發的Grand Central Dispatch(GCD)是基於線程池模式的任務並行技術。 libdispatch庫提供了GCD服務的實現。
- libmill: 在C中引入Go-style並發性。
- marl: Marl是用C++11編寫的混合線程/纖程的任務調度程序。
- moderngpu: moderngpu是用於GPUs通用計算的生產力庫,它只有為CUDA編寫的C++頭文件。該庫的獨特價值在於其用於解決不規則並行問題的加速基元。
- NCCL: 用於集體多GPU通信的優化基元。
- OpenCL: 並行編程的異構系統的開放標準。
- OpenMP: OpenMP API。
- SObjectizer: 實現Actor、Publish-Subscribe和CSP模式的相當小的C++框架。
- Quantum: 建立在boost::coroutines2頂層的強大的C++協同調度程序框架。
- RaftLib: RaftLib C++ 庫,通過類似iostream的C++ 運算符實現流/數據流並發性。
- readerwriterqueue: C++的快速單生產者、單消費者的無鎖隊列。
- stdgpu: GPU上高效的類似STL的數據結構。
- Thrust: 類似於C++標準模板庫的並行算法庫。
- transwarp: 任務並發性的C++庫,只有頭文件。
- VexCL: 用於OpenCL/CUDA 的C++向量表達式模板庫。
- Quantum: 建立在boost::coroutines2頂層的強大的C++協同調度程序框架。
- STAPL: C++並行編程框架,旨在工作在共享和分佈式內存並行電腦上。
配置
配置文件,INI文件
inih: C語言的簡單.INI文件解析器,很適合嵌入式系統。
inih: inih的C++版本,只有頭文件。
iniparser: INI文件解析器。
libconfig: 用於處理結構化配置文件的C、C++庫。
libconfuse: C的小型配置文件解析庫。
simpleini: 跨平台的C++庫,提供用於讀寫INI配置文件的簡單API。
toml++: TOML解析器和串化器,適用於C++17及更高版本,只有頭文件。
容器
- C++ B-tree: 基於B樹數據結構,實現命令內存容器的模板庫。
- Colony: 無序的”bag“型容器,在高度修改的情況下,其性能優於標準容器。同時,無論插入還是擦除,其都能始終保持指向未擦除元素的永久指針。
- dynamic_bitset: C++17 的動態位集合,只有頭文件。
- Forest: 實現了AVL、二進制搜索、KD和四叉樹的模板庫。
- Hashmaps: C++中開放尋址哈希表算法的實現。
- Hopscotch map: 使用hopscotch哈希算法來實現衝突解決的快速哈希映射,只有頭文件。
- LSHBOX: 局部敏感算法(LSH)的C++工具箱,提供了好幾種普遍的LSH算法,也可以支持Python和MATLAB。
- PGM-index: 能夠快速查找、前導、範圍搜索和更新數以億計項數組的數據結構,其跟傳統索引相比,使用梯度的順序而不是空間。
- plf::list: std::list實現,其清除範圍拼接以啟用緩存友好的結構,從而顯著提高性能。
- plf::stack: std::stack容器適配器的替換容器,其在堆棧上下文中比任何標準容器都有更好的性能。
- ring_span lite: Arthur O'Dwyer的ring_span的簡化實現,例如循環緩衝視圖。
- robin-hood-hashing: 用於C++1的快速、節約內存的哈希表,基於robin hood哈希算法。
- robin-map: 使用robin hood哈希算法的哈希映射和哈希集。
- sparsepp: 用於C++的快速、節約內存的哈希映射。
密碼學
密碼學和加密庫
- Bcrypt: 一個跨平台的文件加密工具,加密文件可以移植到所有可支持的操作系統和處理器中。
- BeeCrypt: 可移植和快速的加密庫。
- Botan: C++加密庫。
- Crypto++: 一個有關加密方案的免費的C++庫。
- digestpp: C++11的信息摘要(哈希)庫,只有頭文件。
- GnuPG: OpenPGP標準的完整和免費實現。
- GnuTLS: 實現了SSL,TLS和DTLS協議的安全通信庫。
- Libgcrypt: 通用的密碼庫,最初基於CnuPG的代碼。
- LibreSSL: 免費的SSL/TLS協議,屬於2014 OpenSSL的一個分支。
- libsodium: 基於NaCI的加密庫,固執己見,容易使用。
- libhydrogen: 輕量級、安全、易於使用的加密庫,適用於受限的環境。
- LibTomCrypt: 相當全面、模塊化和可移植的加密工具包。
- mbedTLS: 開源的、可移植的、易於使用的、可讀的、靈活的SSL庫,以前被稱為PolarSSL。
- Nettle 底層的加密庫。
- OpenSSL: 一個健壯的,商用的,功能齊全的,開源的加密庫。
- retter: 與哈希函數、密碼、工具、庫和材料相關的密碼學集合。
- s2n: TLS/SSL協議的實現。
- sha1collisiondetection: 用於檢測文件中SHA-1衝突的庫和命令行工具。
- Tink: 多語言、跨平台的庫,提供安全、易於正確使用且難以濫用的加密API。
- Tiny AES in C: C中小型可移植的AES128/192/256。
- Themis: 用於無痛數據安全的加密庫,為移動和服務器平台提供對稱和非對稱加密,具有向前保密性的安全套接字。
CSV
用於解析逗號分隔值(CSV)文件的庫
- csv2: 現代C++的快速CSV解析器。
- Fast C++ CSV Parser: 用於讀取CSV文件的小型、易於使用和快速的庫,只包含頭文件。
- Vince's CSV Parser: 快速、獨立、流式的C++17 CSV解析器,具有可選的類型轉換和統計信息。
資料庫
數據庫,SQL服務器,ODBC驅動程序和工具
- hiberlite: 用於Sqlite3的C++對象關係映射。
- Hiredis: 用於Redis數據庫的很簡單的C客戶端庫。
- LevelDB: 由Google編寫的快速鍵值存儲庫,提供了從字符鍵到字符串值的有序映射。
- LMDB: 符合數據庫四大基本元素的嵌入鍵值存儲。
- LMDB++: LMDB嵌入式數據庫的C++11封裝器。
- MongoDB C Driver: C的MongoDB客戶端庫。
- MongoDB C++ Driver: MongDB的C++驅動程序。
- MongoDB Libbson: BSON實用庫。
- MySQL++: 封裝了MySql的C API的C++ 封裝器。
- nanodbc: 用於本機C ODBC API的小型C++封裝器。
- ODB: C++的開源、跨平台、跨數據庫的對象關係映射(ORM)系統。
- redis3m: 使用乾淨C++接口的hiredis封裝器,支持標記和現成的模式。
- RocksDB: 來自Facebook的嵌入鍵值的快速存儲。
- SimDB: 高性能、共享內存、無鎖、跨平台、單文件、最小依賴的C++11鍵值存儲。
- SOCI: C++的數據庫抽象層。
- SQLite: 一個完全嵌入式的,功能齊全的關係數據庫,只有幾百KB,可以正確包含到你的項目中。
- SQLiteC++: SQLiteC++ (SQLiteCpp)是聰明且易於使用的C++ SQLite3封裝器。
- sqlite_modern_cpp: sqlite庫的C++14封裝器,只有頭文件。
- sqlite_orm: 適用於現代C++的SQLite ORM輕量庫,只有頭文件。
- sqlpp11: 用於SQL查詢和在C++產生結果的類型安全的嵌入式域特定語言。
- TileDB: 快速密集和稀疏多維數組DBMS。
- UnQLite: 獨立、無服務器、零配置的事物型NoSQL引擎。
- upscaledb: 具有內置查詢接口的嵌入式“typed”鍵值存儲。
偵錯
調試庫, 內存和資源洩露檢測,單元測試
- backward-cpp: C++的漂亮堆棧軌跡打印機。
- benchmark: Google提供的小型微基準支持庫。
- Boost.Test: Boost測試庫。
- check: C的單元測試框架。
- doctest: 功能最輕便的單個C++頭文件的測試框架。
- Catch: 一個很時尚的,C++原生的框架,只包含頭文件,用於單元測試,測試驅動開發和行為驅動開發。
- Catch2: 一個很時尚的,C++原生的框架,只包含頭文件,用於單元測試,測試驅動開發和行為驅動開發。
- Celero: C++基準測試框架。
- CppUTest: C/C++的單元測試和模擬框架。
- CUTE: 更容易的C++單元測試。
- CMocka: 支持模擬對象的C單元測試框架。
- CppUnit: 由JUnit移植過來的C++測試框架。
- CTest: CMake測試驅動程序。
- dbg-macro: C++的dbg(……)宏。
- Deleaker: 用於資源洩露檢查的工具,包括內存、GDI和處理洩露。
- fff: 創建偽C函數的微框架。
- Google Mock: 編寫和使用C++模擬類的庫。
- Google Test: Google的C++測試框架。
- ig-debugheap: 用於追踪內存錯誤的多平台調試堆。
- libtap: 用C語言編寫測試。
- MemTrack: 用於C++跟踪內存分配。
- microprofile: 跨平台的網絡視圖分析器。
- minUnit: 使用C寫的最小的單元測試框架,包含在單個頭文件中。
- Mockator: 用於C++縫合和模擬對象的Eclipse CDT插件。
- Nanotimer: 用於基準測試的簡單、低開銷、跨平台的定時器類。
- Nonius: C++微基準測試框架。
- Remotery: 用於Web視圖的單一C文件分析器。
- UnitTest++: 輕量級的C++單元測試框架。
- Unity: C的簡單單元測試。
- utest.h: C和C++的單個頭文件測試框架。
- μt: C++20的單頭文件/單模塊、無宏的μ(微型)/單元測試框架。
- VLD: 微軟測漏儀,Visual C++的免費、健壯、開源的內存洩漏檢測系統。
字體
解析和處理字體文件的庫。
- Fontconfig: 字體配置和自定義庫。
- FreeType: 用於渲染字體的免費、可獲得的軟件庫。
- otfcc: 用於解析和編寫OpenType字體文件的C庫和實用程序。
遊戲引擎
- 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: 在STALKER遊戲系列中使用的社群修改的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應用的庫。
圖形
- assimp: 開放資產導入庫(assimp)是跨平台的3D模型導入庫,旨在為不同的3D資產文件格式提供通用的API。
- bgfx: 跨平台的渲染庫。
- Blend2D: 由JIT編譯器提供技術支持的2D矢量圖形引擎。
- bs::framework: 用於實時圖形應用開發的現代C++14庫。
- Cairo: 支持多種輸出設備的2D圖形庫。
- C-Turtle: 充當Clmg封裝器的C++11 turtle圖形庫,只有頭文件。
- Diligent Engine: 現代、跨平台、低階的3D圖形庫。
- DirectXTK: 用於在C++中編寫DirectX 11.x代碼的幫助類的集合。
- GLFW: 簡單、跨平台的OpenGL處理庫。
- herebedragons: 使用各種引擎、框架或者API實現的基本3D場景。
- Horde3D 一個小型的3D渲染和動畫引擎。
- Ion: 小型高效的庫集合,用於構建使用3D圖形的跨平台客戶端或服務器應用程序。
- Irrlicht: C++編寫的高性能實時3D引擎。
- libigl: 簡單的C++幾何處理庫。
- LLGL: 低水平圖形庫(LLGL)是現代圖形API的薄抽象層。
- magnum: 用於遊戲和數據可視化的輕量級和模塊化的C++ 11 /C++ 14圖形中間件。
- NanoVG: OpenGL之上的抗鋸齒2D矢量圖形庫,用於UI和可視化。
- Ogre 3D: 用C++編寫的一個面向場景,實時,靈活的3D渲染引擎(並非遊戲引擎)。
- OpenSceneGraph: 具有高性能的開源3D圖形工具包。
- OpenSubdiv: Pixar的庫,用於評估和渲染CPU和GPU上的細分曲面。
- OpenVDB: 用於存儲、編輯、渲染體積數據庫的庫和工具。
- Panda3D: 用於3D渲染和遊戲開發的框架,用Python和C++編寫。
- Partio: 用於處理粒子數據的庫,支持大多數常見文件形式。
- Skia 用於繪製文字,圖形和圖像的完整的2D圖形庫。
- TinySpline: 小型但強大的ANSI C庫,用於差值、轉換和查詢任意NURBS、B-樣條函數和貝賽爾曲線。
- urho3d 跨平台的渲染和遊戲引擎。
- Yocto/GL: 用於數據驅動的基於物理圖形的微型C++庫。
圖像處理
- 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計算機圖形學,圖像處理和可視化的開源免費軟件系統。
國際化
- gettext: GNU `gettext'。
- 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開發。
- 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
- Boost.PropertyTree: 屬性樹解析器/生成器,可用於解析XML / JSON / INI / Info文件。
- cJSON: ANSI C的超輕量級JSON解析器。
- frozen: C/C++的Json解析生成器。
- Jansson: 進行編解碼和處理Json數據的C語言庫。
- jbson: C++14中構建和迭代BSON data和Json 文檔的庫。
- JeayeSON: 非常健全的C++ JSON庫,只包含頭文件。
- Jsmn: C語言中的簡約JSON解析器。
- json: 用於現代C++的JSON。
- JSON++: C++的JSON 解析器。
- json.h: 在C和C++中解析JSON的簡單的單頭文件/單源文件的解決方案。
- json-c: C中的JSON實現。
- jsoncons: 使用JSONPointer、JSONPatch、JSONPath和JMESPath的JSON和類似JSON二進制格式的C++庫,只有頭文件。
- JsonCpp: 可與JSON交互的C++庫。
- json-parser: 用可移植的ANSI C編寫的JSON解析器,佔用內存非常少。
- json11: 一個迷你的C++11 JSON庫。
- json-voorhees: C++的JSON庫。支持C++ 11,無依賴關係,快速且對開發人員友好。
- jute: 非常簡單的C++ JSON解析器。
- ibjson: C語言中的JSON解析和打印庫,很容易和任何模型集成。 。
- libjson: 輕量級的JSON庫。
- LIBUCL: 通用配置庫解析器。
- parson: 用C編寫的輕量級的JSON庫。
- PicoJSON: C++中JSON解析序列化,只包含頭文件。
- qt-json: 用於JSON數據和QVariant層次間的相互解析的簡單類。
- QJson: 將JSON數據映射到QVariant對象的基於Qt的庫。
- RapidJSON: 用於C++的快速JSON 解析生成器,包含SAX和DOM兩種風格的API。
- sajson: 用於C++ 11的輕量級、高性能的JSON解析器。
- simdjson: 極快的JSON庫,可以千兆字節每秒的速度解析JSON。
- taoJSON: 零依賴的C++JSON庫,只包含頭文件。
- ujson: µjson是一個小型、C++ 11、UTF-8、JSON的庫。
- YAJL: C語言中快速流JSON解析庫。
紀錄
- Blackhole: 基於屬性的日誌框架,旨在快速、模塊化和高度可定制。
- Boost.Log: 設計非常模塊化,並且具有擴展性。
- Easylogging++: 適用於C++ 11(或更高版本)應用程序的超輕量級、高性能的日誌庫。
- G3log: 具有動態接收模塊的異步記錄器。
- glog: Google日誌模塊的C++實現。
- Log4cpp: C++類庫,用於靈活地添加日誌到文件,系統日誌,IDSA和其他地方。
- log4cplus: 易於使用的C++日誌API,可提供對日誌管理和配置的線程安全、靈活且任意粒度的控制。
- loguru: 輕量級的C++日誌庫。
- plog: C++可移植且簡單的日誌,少於1000行代碼。
- reckless: C++低延遲、高吞吐量、異步的日誌庫。
- spdlog: 超級快的C++日誌庫,只包含頭文件。
- templog: 小型、輕量級的C++ 庫,可以添加日誌到你的C++應用程序中。
- P7Baical: 開源、跨平台的庫,用於在最小限度使用CPU和內存的情況下高速發送遙測和跟踪數據。
- Quill: 異步、跨平台、低時延的日誌庫。
機器學習
- 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浮點更有效。假定數使可複現的計算科學成為可能。
內存分配
- Boehm GC: C和C++的保守的垃圾回收器。
- C Smart Pointers: (GNU)C編程語言的智能指針。
- Hoard: 快速、可擴展和節約內存的Malloc,支持Linux、Windows和Mac。
- jemalloc: 通用的malloc(3)實現,強調避免存儲碎片和可擴展的並發支持。
- memory: 兼容STL的C++內存分配器庫。
- memory-allocators: 自定義內存分配器,可提高動態內存分配的性能。
- mimalloc: 具有出色性能的緊湊型通用分配器。
- tgc: 用~500 LOC編寫的C語言微型垃圾回收器。
多媒體
- GStreamer: 構建媒體處理組件圖形的庫。
- libass: ASS / SSA字幕格式的便攜式字幕渲染器。
- libass: 處理多媒體內容(例如音頻、視頻、字幕和相關元數據)的庫和工具的集合。
- LIVE555 Streaming Media: 使用開放標準協議(RTP/RTCP, RTSP, SIP) 的多媒體流庫。
- libVLC: libVLC (VLC SDK)媒體框架。
- MediaInfoLib: 用於視頻和音頻文件中最相關的技術和標籤數據的方便統一顯示。
- QtAv: 基於Qt和FFmpeg的多媒體播放框架,能夠幫助你輕而易舉地編寫出一個播放器。
- SDL: 簡單直控媒體層。
- SFML: 快速,簡單的多媒體庫。
- TagLib: 用於讀取和編輯幾種流行音頻格式的元數據的庫。
網絡
- ACE: C++面向對象網絡編程工具包。
- Boost.Asio: 用於網絡和底層I/O編程的跨平台的C++庫。
- Boost.Beast: 在C++ 11中基於Boost.Asio構建的HTTP和WebSocket。
- Breep: 基於事件的高級C++ 14點對點庫。
- C++ REST SDK: C++ REST SDK(以前稱為Casablanca)。
- Restbed: C++ 11異步RESTful框架。
- Restinio: 只有頭文件的C++ 14庫,為您提供嵌入式HTTP / Websocket服務器。
- c-ares: 用於異步DNS請求的C庫。
- cpp-httplib: 單文件的C++ 11 HTTP / HTTPS服務器庫,只包含頭文件。
- cpp-netlib: 高級網絡編程的開源庫集合。
- cpp-netlib/uri: C++的URI解析器/生成器庫,與RFC 3986和RFC 3987兼容。
- cpr: 現代C++ HTTP請求庫,具有簡單但功能強大的接口。模仿Python Requests模塊。
- curlcpp: CURL(libcurl)的面向對象C++封裝器。
- DPDK: 用於快速打包處理的數據平面開發工具、庫和驅動程序。
- Dyad.c: C的異步網絡。
- ENet: 可靠的UDP網絡庫。
- evpp: 具有TCP / UDP / HTTP協議的C++高性能網絡。
- H2O: 優化的HTTP服務器,支持HTTP / 1.x和HTTP / 2。它也可以用作庫。
- HTTP Parser: C的http請求/響應解析器。
- KCP: 快速、可靠的ARQ協議,可幫助應用程序減少網絡延遲。
- libcurl: 多協議文件傳輸庫。
- libhttpserver: 用於創建嵌入式Rest HTTP服務器(以及更多)的C++庫。
- Libmicrohttpd: GNU libmicrohttpd是一個小型C庫,可以輕鬆地將HTTP服務器作為另一個應用程序的一部分運行。
- libpcap: 用於網絡流量捕獲的可移植C / C++庫。
- libquic: 從Chromium的QUIC實現中提取的QUIC協議庫。
- librdkafka: 用於C和C++的Apache Kafka客戶端庫。
- libwebsockets: 提供客戶端和服務器庫的輕量級純C WebSocket實現。
- lwIP: 輕量級TCP / IP堆棧。
- Mongoose :非常輕量級的網絡服務器。
- MQTT-C: 適用於嵌入式系統和類PC機的便攜式MQTT C客戶端。
- mTCP: 用於多核系統的高度可擴展的用戶級TCP堆棧。
- Muduo: 用於Linux多線程服務器的C++非阻塞網絡庫。
- nghttp2: HTTP / 2 C庫。
- Onion: C語言HTTP服務器庫,其設計為輕量級,易使用。
- PF_RING™: 高速打包處理框架。
- PicoHTTPParser: 微小、原始、快速的HTTP請求/響應解析器。
- POCO: 用於構建網絡和基於互聯網應用程序的C++類庫,可以運行在桌面,服務器,移動和嵌入式系統。
- Proxygen: Facebook的C++ HTTP庫集合,包括易於使用的HTTP服務器。
- RakNet: 為遊戲開發人員提供的跨平台的開源C++網絡引擎。
- restclient-cpp: 用於C++的簡單REST客戶端。它包裝libcurl用於HTTP請求。
- Seasocks: 具有WebSockets支持的簡單、小型的C++嵌入式Web服務器。
- Silicon: 高性能、面向中間件的C++ 14 http Web框架。
- tlse: 單個C文件的TLS 1.2 / 1.3實現,使用tomcrypt作為加密庫。
- Tufão: 基於Qt構建的C++異步Web框架。
- uriparser: 嚴格符合RFC 3986的URI解析和處理庫。
- uWebSockets: µWS是最輕量級、高效和可伸縮的WebSocket和HTTP服務器的實現之一。
- WAFer: 基於C語言的超輕型軟件平台,用於可擴展的服務器端和網絡應用。為C程序員考慮了node.js。
- Wangle: 客戶端/服務器應用程序框架,用於構建異步的、事件驅動的現代C++服務。
- wdt: 可嵌入式庫(和命令行工具),旨在通過多個TCP路徑盡可能快地在2個系統之間傳輸數據。
- WebSocket++: 基於C++/Boost Aiso的websocket 客戶端/服務器庫。
- PcapPlusPlus: 跨平台的C++網絡嗅探以及數據包解析和構建的框架。
- ZeroMQ: 高速,模塊化的異步通信庫。
PDF
解析和處理PDF文檔的庫。
- libharu: 免費、跨平台、開源的軟件庫,用於生成PDF。
- litePDF: 創建和編輯PDF文檔的庫,它通過設備上下文使用GDI功能來繪製頁面內容。
- MuPDF: 輕量級的PDF、XPS和電子書查看器。
- PoDoFo: 使用PDF文件格式的庫。
- Poppler: 基於xpdf-3.0代碼庫的開源、多後端的PDF渲染庫。
- Xpdf: Xpdf是一款免費的PDF查看器和工具包,包括文本提取器、圖像轉換器、HTML轉換器等。
- DynaPDF: 易於使用的PDF生成庫。
物理學
動力學仿真引擎
- Box2D: 2D的遊戲物理引擎。
- Bullet: 3D的遊戲物理引擎。
- Chipmunk: 快速、輕量級的2D遊戲物理庫。
- LiquidFun: 2D的遊戲物理引擎。
- Newton Dynamics: 用於物理環境實時仿真的集成解決方案。
- ODE: 開放動力學引擎-開源,高性能庫,模擬剛體動力學。
- ofxBox2d: Box2D開源框架包裝器。
- PhysX: Nvidia開發的開源的實時物理引擎中間件SDK,作為Nvidia GameWorks軟件套件的一部分。
- Project Chrono: 開源的多物理場仿真引擎。
- Quantum++: 現代的C++ 11量子計算庫。
- Simbody: 高性能C++多體動力學/物理庫,模擬關節生物力學和機械系統,像車輛,機器人和人體骨骼。
- SOFA: SOFA是一個針對實時仿真的開源框架,其著重於醫學仿真。
映射
- Better Enums: 映射的枚舉類型(字符串、迭代)。單個頭文件。
- clReflect: 使用clang的C++映射。
- CPFG: 用於反射、回調和腳本綁定的C++ 03庫。
- CPP-Reflection: 使用clang的C++映射。
- Magic Enum: 只包含頭文件的的C++ 17庫,為枚舉類型(字符串、迭代)提供靜態映射,可與任何枚舉類型一起使用,無需任何宏或樣板代碼。
- magic_get: 類似std: : tuple的方法,用於用戶定義類型,無需任何宏或樣板代碼。
- meta: C++的非侵入性且無宏的運行時映射系統,只包含頭文件。
- Nameof: 只包含頭文件的的C++ 17庫,提供名稱宏和函數以獲取變量、類型、函數、宏和枚舉的簡單名稱。
- Ponder: C++11的映射庫。
- RTTR: C++11的映射庫。
- visit_struct: C++中用於結構域映射的微型庫。
正則表達式
- 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兼容的正則表達式引擎庫,不可回溯,可與大型數據流進行匹配。
機器人學
- MOOS-IvP: 一組開源C++模塊,提供機器人平台的自主權,尤其是自主的海洋車輛。
- MRPT: 移動機器人編程工具包。
- PCL: 點雲庫是一個獨立的,大規模的開放項目,用於2D/3D圖像和點雲處理。
- Robotics Library (RL): 一個獨立的C++庫,包括機器人動力學,運動規劃和控制。
- RobWork: 一組C++庫的集合,用於機器人系統的仿真和控制。
- ROS: 機器人操作系統,提供了一些庫和工具幫助軟件開發人員創建機器人應用程序。
科學計算
- 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中。
序列化
- Bitsery: 只包含頭文件的C++二進制序列化庫。
- Bond: 用於處理模式化數據的開源、跨平台框架。
- Boost.Serialization: Boost序列化庫。
- Cap'n Proto: 快速數據交換格式和RPC系統。
- cereal: C++11 序列化庫。
- cppcodec: 只包含頭文件的C++ 11庫,具有一致、靈活的API來編碼/解碼base64,base32和hex。
- FlatBuffers: 內存高效的序列化庫。
- MessagePack: C/C++的高效二進制序列化庫,例如JSON。
- mrpt-serialization: 已版本控制的二進製或文本格式的序列化。
- nanopb: ANSI C中的小型代碼大小的協議緩衝區實現。
- protobuf: 協議緩衝,谷歌的數據交換格式。
- protobuf-c: C語言的協議緩衝實現。
- SimpleBinaryEncoding: 用於低延遲應用程序的對二進制格式的應用程序信息的編碼和解碼。
- upb: C中的小型靜態庫實現。
- YAS: 非常快的序列化庫,支持二進制/文本/ JSON格式。
排序
- pdqsort: 破壞模式的快速排序。
- Timsort: 模板化的穩定排序功能,其性能優於基於快速排序的算法(包括std: : sort),用於反向或半排序數據。
影片
- libvpx: VP8/VP9編碼解碼SDK。
- FFmpeg: 一個完整的,跨平台的解決方案,用於記錄,轉換視頻和音頻流。
- libde265: 開放的h.265視頻編解碼器的實現。
- x265: 開放的H.265視頻編解碼器實現。
- OpenH264: 開源H.364 編解碼器。
- Theora: 免費開源的視頻壓縮格式。
- Vireo: Twitter的輕量級、多功能的視頻處理庫。
虛擬機
- CarpVM: C中有趣的VM,讓我們一起來看看這個。
- MicroPython: 旨在實現單片機上Python3.x的實現。
- TinyVM: 用純粹的ANSI C編寫的小型,快速,輕量級的虛擬機。
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
- Boost.PropertyTree: 屬性樹解析器/生成器,可用於解析XML / JSON / INI / Info文件。
- Expat: 用C語言編寫的xml解析庫。
- Libxml2: Gnome的xml C解析器和工具包。
- libxml++: C++的xml解析器。
- Mini-XML: 用ANSI C編寫的小型XML解析庫。
- PugiXML: 用於C++的,支持XPath的輕量級,簡單快速的XML解析器。
- RapidXml: 試圖創建最快速的XML解析器,同時保持易用性,可移植性和合理的W3C兼容性。
- TinyXML: 簡單小型的C++XML解析器,可以很容易地集成到其它項目中。
- TinyXML2: 簡單快速的C++CML解析器,可以很容易集成到其它項目中。
- TinyXML++: TinyXML的一個全新的接口,使用了C++的許多許多優勢,模板,異常和更好的異常處理。
- Xerces-C++: 用可移植的C++的子集編寫的XML驗證解析器。
多項混雜
一些有用的庫或者工具,但是不適合上面的分類,或者還沒有分類。
- access_profiler: 用於計算對c ++程序中成員變量的訪問的工具。
- American fuzzy lop: aka afl-fuzz-瘋狂的模糊測試工具,可在給定時間和最少示例輸入的情況下自動發現錯誤。
- Better String: C字符串庫的替代方法,它功能更強大,並且沒有緩衝區溢出超限問題。還包括C++封裝器。
- Boost.Signals: 託管信號和插槽系統的實現。
- CPPItertools: 受Python內建函數和itertools庫啟發的基於範圍的循環附加組件。
- DynaMix: 允許您在運行時組成和修改對象的庫。
- {fmt}: 小型、安全、快速的C++格式化庫。
- FastFormat: 受log4j和Pantheios啟發的快速、安全的C++格式化。
- C++ Format: C++的小型,安全和快速格式化庫。
- casacore: 從aips++ 派生的一系列C++核心庫。
- QtVerbalExpressions: 該Qt庫基於C++ VerbalExpressions庫。
- cxx-prettyprint: 用於C++容器的打印庫。
- icecream-cpp: 用於調試目的的小型打印庫。
- gcc-poison: 幫助開發人員禁止應用程序中的不安全的C/C++函數的簡單的頭文件。
- Kangaru: 用於C++ 11和C++ 14的依賴注入容器。
- Klib: 通用算法和數據結構的小型、輕量級實現。
- libsigc++: 用於標準C++的類型安全的回調系統。
- googlemock: 編寫和使用C++模擬類的庫。
- HTTP Parser: C的http請求/響應解析器。
- libcpuid: 用於x86 CPU檢測盒特徵提取的小型C庫。
- libevil: 許可證管理器
- libnih: C函數和結構的輕量級庫。
- libusb: 允許移動訪問USB設備的通用USB庫。
- Mach7: C++的模式匹配庫。
- mio: 用於內存映射文件IO的跨平台C++ 11庫,只包含頭文件。
- PEGTL: 解析表達語法模板庫。
- PCRE: 正則表達式C庫,靈感來自於Perl中正則表達式的功能。
- Remote Call Framework: C++的進程間通信框架。
- Scintilla: 開源的代碼編輯控件。
- Serial Communication Library: C++語言編寫的跨平台,串口庫。
- SDS: C的簡單動態字符串庫。
- semver.c: semver解析器,在ANSI C中呈現。
- Serial Communication Library: 跨平台,用C++編寫的串行端口庫。
- sigslot: C++信號/插槽庫。
- SimpleSignal: 高性能C++ 11信號。
- Stage: 移動機器人模擬器。
- stdman: 格式化的C++ 11/14 stdlib手冊頁(來自cppreference)。
- stb: 一系列用於C / C++的單文件庫。
- StrTk: 由高性能字符串處理例程組成的C++庫。
- Tulip Indicators: 超過100種財務技術分析指標的C庫。
- ub-canaries: 一組C / C++程序,它們試圖使編譯器開發未定義的行為。
- value-category-cheatsheet: 用於lvalue、rvalue等的PDF快捷鍵管理。
- VarTypes: C++/Qt4功能豐富,面向對象的管理變量的框架。
- ZBar: '條形碼掃描器'庫,可以掃描照片,圖片和視頻流中的條形碼,並返回結果。
- ZXing: 用Java實現的開源、多格式1D / 2D條碼圖像處理庫,帶有其他語言的端口。
- pprint: 適用於現代C++的Pretty Printer。
軟體
用於創建開發環境的軟件
編譯器
C/C++編譯器列表
- 8cc: 小型C編譯器。
- c: 一次編譯並執行C“腳本”!
- Clang: LLVM的C編譯器,支持C++ 11/14 / 1z C11,由LLVM團隊開發。
- GCC: GNU編譯器集合,支持C++ 11/14 / 1z C11和OpenMP。
- PCC: 非常老的C編譯器,支持C99。
- Intel C++ Compiler: 由英特爾公司開發。
- LLVM: 模塊化和可重用編譯器和工具鏈技術的集合。
- Microsoft Visual C++: MSVC,由微軟公司開發。
- Open WatCom: Watcom,C,C++和Fortran交叉編譯器和工具。
- Oracle Solaris Studio: 適用於SPARC和x86的C、C++和Fortran編譯器,支持C++ 11 ,在Linux和Solaris上可用。
- TCC: 輕量級的C語言編譯器。
在線編譯器
在線C/C++編譯器列表
- codepad: 在線編譯器/解釋器,一個簡單的協作工具
- coliru: 在線編譯器/ shell,支持各種C++編譯器。
- 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++編譯器。
偵錯工具
C/C++調試器列表
- Comparison of debuggers: 來自維基百科的調試器列表。
- GDB: GNU調試器。
- LLDB: LLDB調試器。
- Metashell: 交互式模板元程序設計,其中包括MDB metadebugger。
- Valgrind: 內存調試,內存洩露檢測,性能分析工具。
- x64dbg: Windows的開源x64 / x32調試器。
集成開發環境
C/C++集成開發環境列表
- Anjuta DevStudio: GNOME IDE。
- AppCode: 構建與JetBrains' IntelliJ IDEA 平台上的用於Objective-C,C,C++,Java和Java開發的集成開發環境。
- Cevelop: 基於Eclipse CDT的跨平台C和C++ IDE,帶有其他插件。
- CLion: 來自JetBrains的跨平台的C/C++的集成開發環境。
- Code::Blocks: 免費C,C++和Fortran的集成開發環境。
- CodeLite: 另一個跨平台的免費的C/C++集成開發環境。
- color_coded: 用於基於libclang的vim插件。
- 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: 來自微軟的集成開發環境。
- Microsoft Visual Studio Code: Microsoft提供的開源IDE。
- NetBeans: 主要用於Java開發的的集成開發環境,也支持其他語言,尤其是PHP,C/C++和HTML5。
- Qt Creator: 跨平台的C++,Javascript和QML集成開發環境,也是Qt SDK的一部分。
- rtags: C/C++的客戶端服務器索引,用於跟基於clang的emacs的集成。
- Xcode: 由蘋果公司開發。
- YouCompleteMe: 一個用於Vim的根據你敲的代碼快速模糊搜索並進行代碼補全的引擎。
- cquery: 用於vscode,emacs,vim等的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++的跨平台構建實用程序。
靜態代碼分析
提高質量,減少瑕疵的代碼分析工具列表
- Cppcheck: 靜態C/C++代碼分析工具
- CppDepend: 通過分析和可視化代碼依賴關係,定義設計規則,進行影響分析以及比較不同版本的代碼,簡化了對複雜C / C++代碼庫的管理。
- cpplint: 遵循Google C++樣式指南的C++樣式檢查器。
- PVS-Studio: 用C、C++和C#編寫的在程序源代碼中進行bug檢測的工具。
- cpp-dependencies: 檢查C++ #include依賴關係的工具(以.dot格式創建的依賴關係圖)。
- include-what-you-use: 使用clang進行代碼分析的工具,可以#include在C和C++文件中。
- Infer: 用於Java、C和Objective-C的靜態分析器。
- OCLint: 用於C、C++和Objective-C的靜態源代碼分析工具,用於提高質量,減少瑕疵。
- Clang Static Analyzer: 查找C、C++和Objective-C程序bug的源代碼分析工具。
- Linticator: Pc-/FlexeLint的Eclipse CDT集成。
- IKOS: 基於抽象解釋理論的C / C++靜態分析器。
- List of tools for static code analysis: 來自維基百科的靜態代碼分析工具列表。
編碼樣式工具
- Artistic Style: 格式化C / C++ / C#/ Obj-C / Java代碼的工具。也稱為astyle。
- ClangFormat: 格式化C / C++ / Obj-C代碼的工具。
- Clang-Tidy: 基於Clang的C++ linter工具。
- EditorConfig: EditorConfig幫助在不同的編輯器和IDE之間維護一致的編碼樣式
- Uncrustify: 代碼美化器。