C++ 資源大全:標準庫、Web框架、人工智慧等 | 最全整理

小万哥丶發表於2024-05-10

C++ 資源列表,內容包括: 標準庫、Web應用框架、人工智慧、資料庫、圖片處理、機器學習、日誌、程式碼分析等

標準庫

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(a.k.a. libtorrent-rasterbar): 高效的、功能完整的C++位元流實現。
  • LibTorrent (a.k.a. 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: 在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應用的庫。

圖形

  • 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: a.k.a. 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: 程式碼美化器。

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關注

相關文章