2021年最新總結,值得推薦的c/c++開源框架與函式庫。持續更新中。
框架
Apache C++ Standard Library : 是一系列演算法,容器,迭代器和其他基本元件的集合
ASL : Adobe原始碼庫提供了同行的評審和可移植的C++原始碼庫。
Boost : 大量通用C++函式庫的集合。
BDE : 來自於彭博資訊實驗室的開發環境。
Cinder : 提供專業品質創意編碼的開源開發社群。
Bxxomfort : 輕量級的,只包含頭檔的函式庫,將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++函式庫
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.
非同步事件循環
Boost.Asio : 用於網路和底層I/O程式設計的跨平台的C++函式庫。
libev : 功能齊全,高效能的時間循環,輕微地仿效libevent,但是不再像libevent一樣有局限性,也修復了它的一些bug。
libevent : 事件通知庫
libuv : 跨平台異步I/O。
libco : 協程,微信支援8億用戶同時在線的底層IO庫。功能強大
ntyco : 純c版的協程框架,程式碼短小精悍,適合嵌入工程。
libgo : golang風格的並發框架,C++11實作協程函式庫
網路庫
ACE : C++物件導向網路變成工具包
Casablanca : C++ REST SDK
cpp-netlib : 高階網路程式設計的開源函式庫集合
Dyad.c : C語言的非同步網絡
libCurl : 多協定檔案傳輸庫
Mongoose : 非常輕量級的網頁伺服器
Muduo : 用於Linux多執行緒伺服器的C++非阻塞網路庫
net_skeleton : C/C++的TCP 用戶端/伺服器庫
WAFer : 基於C語言的超輕型軟體平台,用於可擴展的伺服器端和網路應用。 對於C程式人員,可以考慮node.js
Onion : C語言HTTP伺服器庫,其設計為輕量級,易於使用。
POCO : 用於建立網路和基於互聯網應用程式的C++類別庫,可以運行在桌面,伺服器,移動和嵌入式系統。
RakNet : 為遊戲開發人員提供的跨平台的開源C++網路引擎。
Tufao : 用於Qt之上的C++建構的非同步Web框架。
WebSocket++ : 基於C++/Boost Aiso的websocket 用戶端/伺服器函式庫
ZeroMQ : 高速,模組化的非同步通訊庫
TCP/IP協定堆疊
f-stack : 騰訊開源的協定棧,基於DPDK的高效能使用者態協定棧。
NtyTcp : 單執行緒的協定棧的,基於netmap,DPDK,rawSocket的實作。
LWIP : 針對RAM 平台的精簡版的TCP/IP 協定堆疊實作。
mTCP : 針對多核心系統的高可擴展性的用戶空間TCP/IP 協定堆疊。
4.4BSD : * nix的協定堆疊是源自於4.4BSD的。
WEB應用框架
Nginx : 一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。
Lighttpd : 一款開源Web 伺服器軟體,安全快速,符合業界標準,適配性強並且針對高配置環境進行了最佳化。
Libmicrohttpd : GNU軟體下的簡單c庫的Web伺服器。 API簡單,快速。
shttpd : 基於Mongoose的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++ Standard Library : 是一系列類別和函數的集合,使用核心語言編寫,也是C++ISO自身標準的一部分。
Standard Template Library : 標準範本庫, STL
C POSIX library : POSIX系統的C標準函式庫規範
ISO C++ Standards Committee : C++標準委員會
音訊庫
FMOD : 易於使用的跨平台的音訊引擎和音訊內容的遊戲創作工具。
Maximilian : C++音訊與音樂數位訊號處理庫
OpenAL : 開源音訊庫—跨平台的音訊API
Opus : 一個完全開放的,免版稅的,高度通用的音頻編解碼器
Speex : 免費編解碼器,為Opus所廢棄
Tonic : C++易用且高效的音訊合成
Vorbis : Ogg Vorbis是一種完全開放的,非專有的,免版稅的通用壓縮音訊格式。
生態學
lisequence : 用於表示和分析群體遺傳學資料的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歸檔的讀取權限。
並發性
Boost.Compute : OpenCL的C++GPU計算庫
Bolt : 針對GPU進行最佳化的C++模板庫
C++React : 用於C++11的反應性程式庫
Intel TBB : Intel線程構件塊
Libclsph : 基於OpenCL的GPU加速SPH流體模擬庫
OpenCL : 平行程式設計的異質系統的開放標準
OpenMP : OpenMP API
Thrust : 類似C++標準模板庫的平行演算法庫
HPX : 用於任何規模的平行和分散式應用程式的通用C++運行系統
VexCL : 用於OpenCL/CUDA 的C++向量表達式模板庫。
密碼學
Bcrypt : 一個跨平台的檔案加密工具,加密檔案可以移植到所有可支援的作業系統和處理器。
BeeCrypt : 快速的加密圖形庫,功能強大,介面方便。
Botan : C++加密函式庫
Crypto++ : 一個有關加密方案的免費的C++函式庫
GnuPG : OpenPGP標準的完整實現
GnuTLS : 實作了SSL,TLS和DTLS協定的安全通訊庫
Libgcrypt : 基於GnuPG的加密圖形庫。
Libmcrypt : 線程安全,提供統一的API。
LibreSSL : 免費的SSL/TLS協議,屬於2014 OpenSSL的一個分支
LibTomCrypt : 一個非常全面的,模組化的,可移植的加密工具
libsodium : 基於NaCI的加密庫,固執己見,容易使用
Nettle : 底層的加密庫
OpenSSL : 一個強大的,商用的,功能齊全的,開放原始碼的加密函式庫。
Tiny AES128 in C : 用C實現的一個小巧,可移植的實現了AES128ESB的加密演算法
資料庫
hiberlite : 用於Sqlite3的C++物件關係映射
hiredis : 用於Redis資料庫的很簡單的C客戶端程式庫
LevelDB : 快速鍵值儲存庫
LMDB : 符合資料庫四大基本元素的嵌入鍵值存儲
MySQL++ : 封裝了MySql的C API的C++ 包裝器
RocksDB : 來自Facebook的嵌入鍵值的快速存儲
SQLite : 一個完全嵌入式的,功能齊全的關係資料庫,只有幾百KB,可以正確包含到你的專案中。
Redis : 一個開源的使用ANSI C語言編寫、遵守BSD協定、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫.
MongoDB : 一個基於分散式檔案儲存的資料庫
偵錯
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++單元測試框架
容器
C++ B-Tree : 基於B樹資料結構,實作指令記憶體容器的範本庫
Hashmaps : C++中開放尋址哈希表演算法的實現
遊戲引擎
Cocos2d-x : 一個跨平台框架,用於建立2D遊戲,互動圖書,演示和其他圖形應用程式。
Grit : 社群項目,用於建立一個免費的遊戲引擎,實現開放的世界3D遊戲。
lrrlicht : C++語言編寫的開源高效能的即時#D引擎
PolyCode : C++實現的用於創建遊戲的開源框架(與Lua綁定)。
圖形庫
bgfx : 跨平台的渲染庫
Cairo : 支援多種輸出設備的2D圖形庫
Horde3D : 一個小型的3D渲染和動畫引擎
magnum : C++11和OpenGL 2D/3D 圖形引擎
Ogre 3D : 用C++編寫的一個面向場景,即時,靈活的3D渲染引擎(並非遊戲引擎)
OpenSceneGraph : 具有高效能的開源3D圖形工具包
Panda3D : 用於3D渲染和遊戲開發的框架,用Python和C++編寫。
Skia : 用於繪製文字,圖形和圖像的完整的2D圖形庫
urho3d : 跨平台的渲染和遊戲引擎。
影像處理
Boost.GIL : 通用圖片庫
CImg : 用於影像處理的小型開源C++工具包
FreeImage : 開源程式庫,支援現在多媒體應用程式所需的通用圖片格式和其他格式。
GDCM : Grassroots DICOM 庫
ITK : 跨平台的開源影像分析系統
Magick++ : ImageMagick程式的C++接口
OpenCV : 開源電腦視覺類別庫
tesseract-ocr : OCR引擎
VIGRA : 用於影像分析通用C++電腦視覺庫
VTK : 用於3D電腦圖形學,影像處理和視覺化的開源免費軟體系統。
國際化
gettext : GNU gettext
IBM ICU : 提供Unicode 和全球化支援的C、C++ 和Java庫
libiconv : 用於不同字元編碼之間的編碼轉換庫
Json庫
frozen : C/C++的Jason解析產生器
Jansson : 進行編解碼與處理Jason資料的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的庫
RepidJSON : 用於C++的快速JSON 解析產生器,包含SAX和DOM兩種風格的API
YAJL : C語言中快速流JSON解析庫
紀錄
Boost.Log : 設計非常模組化,並且具有擴充性
easyloggingpp : C++日誌庫,只包含單一的頭檔。
Log4cpp : 一系列C++類別庫,靈活添加日誌到文件,系統日誌,IDSA和其他地方。
templog : 輕量級C++函式庫,可以加入日誌到你的C++應用程式中
機器學習,人工智慧
btsk : 遊戲行為樹啟動器工具
Evolving Objects : 基於模板的,ANSI C++演化計算庫,能夠幫助你非常快速地寫出自己的隨機最佳化演算法。
Caffe : 快速的神經網路框架
CCV : 以C語言為核心的現代電腦視覺庫
mlpack : 可擴充的C++機器學習函式庫
OpenCV : 開源電腦視覺庫
Recommender : 使用協同過濾進行產品推薦/建議的C語言庫。
SHOGUN : Shogun 機器學習工具
sofia-ml : 用於機器學習的快速增量演算法套件
數學庫
Armadillo : 高品質的C++線性代數函式庫,速度和易用性做到了很好的平衡。文法和MatlAB很相似
blaze : 高效能的C++數學函式庫,用於密集和稀疏演算法。
ceres-solver : 來自Google的C++函式庫,用於建模和解決大型複雜非線性最小平方問題。
CGal : 高效,可靠的集合演算法集合
CML : 用於遊戲和圖形的免費C++數學庫
Eigen : 高階C++模板頭檔庫,包括線性代數,矩陣,向量操作,數值解決和其他相關的演算法。
GMTL : 數學圖形範本庫是一組廣泛實現基本圖形的工具。
GMP : 用於個高精度計算的C/C++函式庫,處理有符號整數,有理數和浮點數。
多媒體庫
GStreamer : 建構媒體處理元件圖形的函式庫
LIVE555 Streaming Media : 使用開放標準協定(RTP/RTCP, RTSP, SIP) 的多媒體串流庫
libVLC : libVLC (VLC SDK)媒體框架
QtAV : 基於Qt和FFmpeg的多媒體播放框架,能夠幫助你輕鬆地寫出一個播放器
SDL : 簡單直控媒體層
SFML : 快速,簡單的多媒體函式庫
物理學
Box2D : 2D的遊戲物理引擎。
Bullet : 3D的遊戲物理引擎。
Chipmunk : 快速,輕量級的2D遊戲物理庫
LiquidFun : 2D的遊戲物理引擎
ODE : 開放動力學引擎-開源,高效能函式庫,模擬剛體動力學。
ofxBox2D : Box2D開源框架包裝器。
Simbody : 高性能C++多體動力學/物理庫,模擬關節生物力學和機械系統,像車輛,機器人和人體骨骼。
機器人學
MOOS-Ivp : 一組開源C++模組,提供機器人平台的自主權,尤其是自主的海洋車輛。
MRPT : 移動機器人程式設計工具包
PCL : 點雲庫是一個獨立的,大規模的開放項目,用於2D/3D影像和點雲處理。
Robotics Library : 一個獨立的C++函式庫,包括機器人動力學,運動規劃與控制。
RobWork : 一組C++函式庫的集合,用於機器人系統的模擬與控制。
ROS : 機器人作業系統,提供了一些函式庫和工具來幫助軟體開發人員創建機器人應用程式。
科學計算
FFTW : 用一維或多維計算DFT的C語言函式庫。
GSL : GNU科學庫。
腳本
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 : 協定緩衝,Google的資料交換格式。
ProtoBuf-c : C語言的協定緩衝實現
SimpleBinaryEncoding : 用於低延遲應用程式的對二進位格式的應用程式資訊的編碼和解碼。
Thrift : 高效率的跨語言IPC/RPC,用於C++,Java,Python,PHP,C#和其它多種語言中,最初由Facebook開發。
影片庫
libvpx : VP8/VP9編碼解碼SDK
FFMpeg : 一個完整的,跨平台的解決方案,用於記錄,轉換視訊和音訊串流。
libde265 : 開放的h.265視訊編解碼器的實作。
OpenH264 : 開源H.364 編解碼器。
Theora : 免費開源的影片壓縮格式。
XML函式庫
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驗證解析器。
零領工作
即時提供,每週發布北京,上海,廣州,深圳,杭州,南京,合肥,武漢,長沙,重慶,成都,西安,廈門的c/c++,golang方向的招聘崗位資訊。 含校招,社招,實習職位, 面經,八股,履歷