【2024】C/C++框架和庫超全總結

本文分為2部分,第一部分:值得學習的C/C++語言開源項目;第二部分是開源框架和庫

粉絲福利, 免費領取C/C++ 開發學習資料包、技術視頻/項目代碼,1000道大廠面試題,內容包括(C++基礎,網絡編程,數據庫,中間件,后端開發/音視頻開發/Qt開發/游戲開發/Linuxn內核等進階學習資料和最佳學習路線)↓↓↓↓↓↓見下面↓↓文章底部點擊免費領取↓↓

(1)ACE

龐大、復雜,適合大型項目。開源、免費,不依賴第三方庫,支持跨平臺。

?http://www.cs.wustl.edu/~schmidt/ACE.html??

(2)Asio

Asio基于Boost開發的異步IO庫,封裝了Socket,簡化基于socket程序的開發。

開源、免費,支持跨平臺。

? ?http://think-async.com/??

(3)POCO

POCO C++ Libraries 提供一套 C++ 的類庫用以開發基于網絡的可移植的應用程序,功能涉及線程、線程同步、文件系統訪問、流操作、共享庫和類加載、套接字以及網絡協議包括:HTTP、 FTP、SMTP 等;其本身還包含一個 HTTP 服務器,提供 XML 的解析和 SQL 數據庫的訪問接口。POCO庫的模塊化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,由于C++既適合底層(設備I/O、中斷處理等)和高層面向對象開發,越來越流行。

? ?http://pocoproject.org/??

(4)libevent

Libevent是一個輕量級的開源高性能網絡庫,從它的官網標題:libevent-an event notification library就能知道它的機制是采用事件觸發,封裝了以下三種事件的響應:IO事件,定時器事件,信號事件。select模型來實現跨平臺的操作,Windows環境下支持IOCP。

? ?http://libevent.org/??

(5)libev

libev和libevent很像,按照作者的介紹,可以作為libevent的替代者,能夠提供更高的性能。

libev是一個高性能事件循環,所實現的功能就是一個強大的reactor。

? ?http://software.schmorp.de/pkg/libev.html??

(6)c++ sockets library

封裝了sockets C API的C++類庫。

支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http協議, 高度可定制的錯誤處理。

? ?http://www.alhem.net/Sockets/??

(7)libcurl

libcurl是免費的輕量級的客戶端網絡庫,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支持SSL, HTTP POST, HTTP PUT, FTP上傳, HTTP form上傳,代理,cookies, 用戶名與密碼認證。

如果你開發的是客戶端,libcurl是一個不錯的選擇。

? ?http://curl.haxx.se/libcurl/??

- 8. Webbench

Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個并發連接去測試網站的負載能力。Webbench使用C語言編寫, 代碼實在太簡潔,源碼加起來不到600行。

下載鏈接:? ?http://home.tiscali.cz/~cz210552/webbench.html??

- 9. Tinyhttpd

tinyhttpd是一個超輕量型Http Server,使用C語言開發,全部代碼只有502行(包括注釋),附帶一個簡單的Client,可以通過閱讀這段代碼理解一個 Http Server 的本質。

下載鏈接:? ?http://sourceforge.net/projects/tinyhttpd/??

- 10. cJSON

cJSON是C語言中的一個JSON編解碼器,非常輕量級,C文件只有500多行,速度也非常理想。

cJSON也存在幾個弱點,雖然功能不是非常強大,但cJSON的小身板和速度是最值得贊賞的。其代碼被非常好地維護著,結構也簡單易懂,可以作為一個非常好的C語言項目進行學習。

項目主頁:? ?http://sourceforge.net/projects/cjson/??

- 11. CMockery

cmockery是google發布的用于C單元測試的一個輕量級的框架。它很小巧,對其他開源包沒有依賴,對被測試代碼侵入性小。cmockery的源代碼行數不到3K,你閱讀一下will_return和mock的源代碼就一目了然了。

主要特點:

免費且開源,google提供技術支持;

輕量級的框架,使測試更加快速簡單;

避免使用復雜的編譯器特性,對老版本的編譯器來講,兼容性好;

并不強制要求待測代碼必須依賴C99標準,這一特性對許多嵌入式系統的開發很有用

下載鏈接:? ?http://code.google.com/p/cmockery/downloads/list??

- 12. Libev

libev是一個開源的事件驅動庫,基于epoll,kqueue等OS提供的基礎設施。其以高效出名,它可以將IO事件,定時器,和信號統一起來,統一放在事件處理這一套框架下處理。基于Reactor模式,效率較高,并且代碼精簡(4.15版本8000多行),是學習事件驅動編程的很好的資源。

下載鏈接:? ?http://software.schmorp.de/pkg/libev.html??

- 13. Memcached

Memcached 是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提供動態數據庫驅動網站的速度。Memcached 基于一個存儲鍵/值對的 hashmap。Memcached-1.4.7的代碼量還是可以接受的,只有10K行左右。

下載地址:? ?http://memcached.org/??

- 14. Lua

Lua很棒,Lua是巴西人發明的,這些都令我不爽,但是還不至于臉紅,最多眼紅。

讓我臉紅的是Lua的源代碼,百分之一百的ANSI C,一點都不摻雜。在任何支持ANSI C編譯器的平臺上都可以輕松編譯通過。我試過,真是一點廢話都沒有。Lua的代碼數量足夠小,5.1.4僅僅1.5W行,去掉空白行和注釋估計能到1W行。

下載地址:? ?http://www.lua.org/??

- 15. SQLite

SQLite是一個開源的嵌入式關系數據庫,實現自包容、零配置、支持事務的SQL數據庫引擎。 其特點是高度便攜、使用方便、結構緊湊、高效、可靠。足夠小,大致3萬行C代碼,250K。

下載地址:http://www.sqlite.org/ 。

- 16. UNIX v6

UNIX V6 的內核源代碼包括設備驅動程序在內 約有1 萬行,這個數量的源代碼,初學者是能夠充分理解的。有一種說法是一個人所能理解的代碼量上限為1 萬行,UNIX V6的內核源代碼從數量上看正好在這個范圍之內。看到這里,大家是不是也有“如果只有1萬行的話沒準兒我也能學會”的想法呢?

另一方面,最近的操作系統,例如Linux 最新版的內核源代碼據說超過了1000 萬行。就算不是初學者,想完全理解全部代碼基本上也是不可能的。

下載地址:? ?http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6??

- 17. NETBSD

NetBSD是一個免費的,具有高度移植性的 UNIX-like 操作系統,是現行可移植平臺最多的操作系統,可以在許多平臺上執行,從 64bit alpha 服務器到手持設備和嵌入式設備。NetBSD計劃的口號是:”Of course it runs NetBSD”。它設計簡潔,代碼規范,擁有眾多先進特性,使得它在業界和學術界廣受好評。由于簡潔的設計和先進的特征,使得它在生產和研究方面,都有卓越的表現,而且它也有受使用者支持的完整的源代碼。許多程序都可以很容易地通過NetBSD Packages Collection獲得。

下載地址:? ?http://www.netbsd.org/??

C++ 資源大全

關于 C++ 框架、庫和資源的一些匯總列表,內容包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日志、代碼分析等。

標準庫

C++標準庫,包括了STL容器,算法和函數等。

? ?C++ Standard Library??(http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library):是一系列類和函數的集合,使用核心語言編寫,也是C++ISO自身標準的一部分。

? ?Standard Template Library??(http://en.wikipedia.org/wiki/Standard_Template_Library):標準模板庫

? ?C POSIX library?? (http://en.wikipedia.org/wiki/C_POSIX_library): POSIX系統的C標準庫規范

? ?ISO C++ Standards Committee?? (https://github.com/cplusplus):C++標準委員會

框架

C++通用框架和庫

? ?Apache C++ Standard Library??(http://stdcxx.apache.org/):是一系列算法,容器,迭代器和其他基本組件的集合

? ?ASL?? (http://stlab.adobe.com/):Adobe源代碼庫提供了同行的評審和可移植的C++源代碼庫。

? ?Boost?? (https://github.com/boostorg):大量通用C++庫的集合。

? ?BDE?? (https://github.com/bloomberg/bde):來自于彭博資訊實驗室的開發環境。

? ?Cinder??(http://libcinder.org/):提供專業品質創造性編碼的開源開發社區。

? ?Cxxomfort??(http://ryan.gulix.cl/fossil.cgi/cxxomfort/):輕量級的,只包含頭文件的庫,將C++ 11的一些新特性移植到C++03中。

? ?Dlib??(http://dlib.net/):使用契約式編程和現代C++科技設計的通用的跨平臺的C++庫。

? ?EASTL??(https://github.com/paulhodge/EASTL) :EA-STL公共部分

? ?ffead-cpp?? (https://github.com/sumeetchhetri/ffead-cpp):企業應用程序開發框架

? ?Folly(https://github.com/facebook/folly)??:由Facebook開發和使用的開源C++庫

? ?JUCE??(https://github.com/julianstorer/JUCE) :包羅萬象的C++類庫,用于開發跨平臺軟件

? ?libPhenom??(https://github.com/facebook/libphenom):用于構建高性能和高度可擴展性系統的事件框架。

? ?LibSourcey?? (https://github.com/sourcey/libsourcey):用于實時的視頻流和高性能網絡應用程序的C++11 evented IO

? ?LibU?? (https://github.com/koanlogic/libu): C語言寫的多平臺工具庫

? ?Loki?? (http://loki-lib.sourceforge.net/):C++庫的設計,包括常見的設計模式和習語的實現。

? ?MiLi(https://code.google.com/p/mili/)?? :只含頭文件的小型C++庫

? ?openFrameworks?? (http://www.openframeworks.cc/):開發C++工具包,用于創意性編碼。

? ?Qt?? (http://qt-project.org/):跨平臺的應用程序和用戶界面框架

? ?Reason??(http://code.google.com/p/reason/) :跨平臺的框架,使開發者能夠更容易地使用Java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。

? ?ROOT?? (http://root.cern.ch/):具備所有功能的一系列面向對象的框架,能夠非常高效地處理和分析大量的數據,為歐洲原子能研究機構所用。

? ?STLport??(http://www.stlport.org/):是STL具有代表性的版本

? ?STXXL??(http://stxxl.sourceforge.net/):用于額外的大型數據集的標準模板庫。

? ?Ultimate++?? (http://www.ultimatepp.org/):C++跨平臺快速應用程序開發框架

? ?Windows Template Library??(http://sourceforge.net/projects/wtl/):用于開發Windows應用程序和UI組件的C++庫

? ?Yomm11??(https://github.com/jll63/yomm11) :C++11的開放multi-methods.

人工智能

? ?btsk?? (https://github.com/aigamedev/btsk):游戲行為樹啟動器工具

? ?Evolving Objects??(http://eodev.sourceforge.net/):基于模板的,ANSI C++演化計算庫,能夠幫助你非常快速地編寫出自己的隨機優化算法。

? ?Neu??(https://github.com/andrometa/neu):C++11框架,編程語言集,用于創建人工智能應用程序的多用途軟件系統。

異步事件循環

? ?Boost.Asio(http://think-async.com/)??:用于網絡和底層I/O編程的跨平臺的C++庫。

? ?libev?? (http://libev.schmorp.de/):功能齊全,高性能的時間循環,輕微地仿效libevent,但是不再像libevent一樣有局限性,也修復了它的一些bug。

? ?libevent??(http://libevent.org/) :事件通知庫

? ?libuv?? (https://github.com/joyent/libuv):跨平臺異步I/O。

音頻

音頻,聲音,音樂,數字化音樂庫

? ?FMOD??(http://www.fmod.org/) :易于使用的跨平臺的音頻引擎和音頻內容的游戲創作工具。

? ?Maximilian?? (https://github.com/micknoise/Maximilian):C++音頻和音樂數字信號處理庫

? ?OpenAL??(http://www.openal.org/) :開源音頻庫—跨平臺的音頻API

? ?Opus??(http://opus-codec.org/):一個完全開放的,免版稅的,高度通用的音頻編解碼器

? ?Speex??(http://www.speex.org/):免費編解碼器,為Opus所廢棄

? ?Tonic??(https://github.com/TonicAudio/Tonic): C++易用和高效的音頻合成

? ?Vorbis??(http://xiph.org/vorbis/): Ogg Vorbis是一種完全開放的,非專有的,免版稅的通用壓縮音頻格式。

生態學

生物信息,基因組學和生物技術

? ?libsequence??(http://molpopgen.github.io/libsequence/):用于表示和分析群體遺傳學數據的C++庫。

? ?SeqAn(http://www.seqan.de/)??:專注于生物數據序列分析的算法和數據結構。

? ?Vcflib(https://github.com/ekg/vcflib)?? :用于解析和處理VCF文件的C++庫

? ?Wham(https://github.com/jewmanchue/wham)??:直接把聯想測試應用到BAM文件的基因結構變異。

并發性

并發執行和多線程

? ?Boost.Compute??(https://github.com/kylelutz/compute) :用于OpenCL的C++GPU計算庫

? ?Bolt?? (https://github.com/HSA-Libraries/Bolt):針對GPU進行優化的C++模板庫

? ?C++React??(https://github.com/schlangster/cpp.react) :用于C++11的反應性編程庫

? ?Intel TBB?? (https://www.threadingbuildingblocks.org/):Intel線程構件塊

? ?Libclsph??(https://github.com/libclsph/libclsph):基于OpenCL的GPU加速SPH流體仿真庫

? ?OpenCL?? (https://www.khronos.org/opencl/):并行編程的異構系統的開放標準

? ?OpenMP??(http://openmp.org/):OpenMP API

? ?Thrust(http://thrust.github.io/)?? :類似于C++標準模板庫的并行算法庫

? ?HPX?? (https://github.com/STEllAR-GROUP/hpx/):用于任何規模的并行和分布式應用程序的通用C++運行時系統

? ?VexCL??(https://github.com/ddemidov/vexcl) :用于OpenCL/CUDA 的C++向量表達式模板庫。

容器

? ?C++ B-tree(https://code.google.com/p/cpp-btree/)?? :基于B樹數據結構,實現命令內存容器的模板庫

? ?Hashmaps??(https://github.com/goossaert/hashmap): C++中開放尋址哈希表算法的實現

密碼學

? ?Bcrypt?? (http://bcrypt.sourceforge.net/):一個跨平臺的文件加密工具,加密文件可以移植到所有可支持的操作系統和處理器中。

? ?Botan??(http://botan.randombit.net/): C++加密庫

? ?GnuTLS?? (http://www.gnutls.org/):實現了SSL,TLS和DTLS協議的安全通信庫

? ?Nettle?? (http://www.lysator.liu.se/~nisse/nettle/)底層的加密庫

? ?OpenSSL?? (http://www.openssl.org/): 一個強大的,商用的,功能齊全的,開放源代碼的加密庫。

? ?Tiny AES128 in C?? (https://github.com/kokke/tiny-AES128-C):用C實現的一個小巧,可移植的實現了AES128ESB的加密算法

數據庫

數據庫,SQL服務器,ODBC驅動程序和工具

? ?hiberlite?? (https://github.com/paulftw/hiberlite):用于Sqlite3的C++對象關系映射

? ?Hiredis??(https://github.com/redis/hiredis): 用于Redis數據庫的很簡單的C客戶端庫

? ?LevelDB??(https://github.com/google/leveldb): 快速鍵值存儲庫

? ?LMDB??(http://symas.com/mdb/):符合數據庫四大基本元素的嵌入鍵值存儲

? ?MySQL++(http://www.tangentsoft.net/mysql++/)??:封裝了MySql的C API的C++ 包裝器

? ?RocksDB??(https://github.com/facebook/rocksdb):來自Facebook的嵌入鍵值的快速存儲

? ?SQLite??(http://www.sqlite.org/):一個完全嵌入式的,功能齊全的關系數據庫,只有幾百KB,可以正確包含到你的項目中。

調試

調試庫, 內存和資源泄露檢測,單元測試

? ?Boost.Test(http://www.boost.org/doc/libs/master/libs/test/doc/html/index.html)??:Boost測試庫

? ?Catch??(https://github.com/philsquared/Catch):一個很時尚的,C++原生的框架,只包含頭文件,用于單元測試,測試驅動開發和行為驅動開發。

? ?CppUnit(http://www.freedesktop.org/wiki/Software/cppunit/)??:由JUnit移植過來的C++測試框架

? ?CTest??(http://www.cmake.org/cmake/help/v2.8.8/ctest.html):CMake測試驅動程序

? ?googletest??(http://code.google.com/p/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??:擁有最小依賴關系的立即模式圖形用戶界面

? ?libRocket??? :? ?libRocket?? 是一個C++ HTML/CSS 游戲接口中間件

? ?MyGUI?? :快速,靈活,簡單的GUI

? ?Ncurses??:終端用戶界面

? ?QCustomPlot?? :沒有更多依賴關系的Qt繪圖控件

? ?Qwt?? :用戶與技術應用的Qt 控件

? ?QwtPlot3D?? :功能豐富的基于Qt/OpenGL的C++編程庫,本質上提供了一群3D控件

? ?OtterUI??? :? ?OtterUI?? 是用于嵌入式系統和互動娛樂軟件的用戶界面開發解決方案

? ?PDCurses?? 包含源代碼和預編譯庫的公共圖形函數庫

? ?wxWidgets?? C++庫,允許開發人員使用一個代碼庫可以為widows, Mac OS X,Linux和其他平臺創建應用程序

圖形

? ?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++工具包

? ?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計算機圖形學,圖像處理和可視化的開源免費軟件系統。

國際化

? ?gettext?? :GNU `gettext’

? ?IBM ICU??:提供Unicode 和全球化支持的C、C++ 和Java庫

? ?libiconv?? :用于不同字符編碼之間的編碼轉換庫

Jason

? ?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的庫

? ?RapidJSON??: 用于C++的快速JSON 解析生成器,包含SAX和DOM兩種風格的API

? ?YAJL?? :C語言中快速流JSON解析庫

日志

? ?Boost.Log?? :設計非常模塊化,并且具有擴展性

? ?easyloggingpp??:C++日志庫,只包含單一的頭文件。

? ?Log4cpp?? :一系列C++類庫,靈活添加日志到文件,系統日志,IDSA和其他地方。

? ?templog??:輕量級C++庫,可以添加日志到你的C++應用程序中

機器學習

? ?Caffe?? :快速的神經網絡框架

? ?CCV?? :以C語言為核心的現代計算機視覺庫

? ?mlpack?? :可擴展的C++機器學習庫

? ?OpenCV??:開源計算機視覺庫

? ?Recommender??:使用協同過濾進行產品推薦/建議的C語言庫。

? ?SHOGUN??:Shogun 機器學習工具

? ?sofia-ml?? :用于機器學習的快速增量算法套件

數學

? ?Armadillo?? :高質量的C++線性代數庫,速度和易用性做到了很好的平衡。語法和MatlAB很相似

? ?blaze??:高性能的C++數學庫,用于密集和稀疏算法。

? ?ceres-solver?? :來自谷歌的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?? :快速,簡單的多媒體庫

網絡

? ?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?? :高速,模塊化的異步通信庫

物理學

動力學仿真引擎

? ?Box2D??:2D的游戲物理引擎。

? ?Bullet?? :3D的游戲物理引擎。

? ?Chipmunk?? :快速,輕量級的2D游戲物理庫

? ?LiquidFun??:2D的游戲物理引擎

? ?ODE?? :開放動力學引擎-開源,高性能庫,模擬剛體動力學。

? ?ofxBox2d??:Box2D開源框架包裝器。

? ?Simbody?? :高性能C++多體動力學/物理庫,模擬關節生物力學和機械系統,像車輛,機器人和人體骨骼。

機器人學

? ?MOOS-IvP?? :一組開源C++模塊,提供機器人平臺的自主權,尤其是自主的海洋車輛。

? ?MRPT??:移動機器人編程工具包

? ?PCL?? :點云庫是一個獨立的,大規模的開放項目,用于2D/3D圖像和點云處理。

? ?Robotics Library (RL)??: 一個獨立的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?? :協議緩沖,谷歌的數據交換格式。

? ?protobuf-c?? :C語言的協議緩沖實現

? ?SimpleBinaryEncoding??:用于低延遲應用程序的對二進制格式的應用程序信息的編碼和解碼。

? ?Thrift?? :高效的跨語言IPC/RPC,用于C++,Java,Python,PHP,C#和其它多種語言中,最初由Twitter開發。

視頻

? ?libvpx?? :VP8/VP9編碼解碼SDK

? ?FFmpeg?? :一個完整的,跨平臺的解決方案,用于記錄,轉換視頻和音頻流。

? ?libde265?? :開放的h.265視頻編解碼器的實現。

? ?OpenH264??:開源H.364 編解碼器。

? ?Theora?? :免費開源的視頻壓縮格式。

虛擬機

? ?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++庫。

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++ 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的根據你敲的代碼快速模糊搜索并進行代碼補全的引擎。

構建系統

? ?Bear?? :用于為clang工具生成編譯數據庫的工具

? ?Biicode??:基于文件的簡單依賴管理器。

? ?CMake?? :跨平臺的免費開源軟件用于管理軟件使用獨立編譯的方法進行構建的過程。

? ?CPM??:基于CMake和Git的C++包管理器

? ?FASTBuild??:高性能,開源的構建系統,支持高度可擴展性的編譯,緩沖和網絡分布。

? ?Ninja?? :專注于速度的小型構建系統

? ?Scons?? :使用Python scipt 配置的軟件構建工具

? ?tundra?? :高性能的代碼構建系統,甚至對于非常大型的軟件項目,也能提供最好的增量構建次數。

? ?tup??:基于文件的構建系統,用于后臺監控變化的文件。

靜態代碼分析

提高質量,減少瑕疵的代碼分析工具列表

? ?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?? :來自維基百科的靜態代碼分析工具列表

粉絲福利, 免費領取C/C++ 開發學習資料包、技術視頻/項目代碼,1000道大廠面試題,內容包括(C++基礎,網絡編程,數據庫,中間件,后端開發/音視頻開發/Qt開發/游戲開發/Linuxn內核等進階學習資料和最佳學習路線)↓↓↓↓↓↓見下面↓↓文章底部點擊免費領取↓↓

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18979.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18979.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MATLAB分類與判別模型算法:基于LVQ神經網絡的乳腺腫瘤診斷分類程序【含Matlab源碼 MX_003期】

說明 實現基于LVQ(Learning Vector Quantization,學習向量量化)神經網絡的乳腺腫瘤診斷分類任務。LVQ是一種監督學習算法,通常用于模式識別和分類任務。 算法思路介紹: 導入數據: 加載名為"data.mat&…

2024下半年軟考報名人數較去年減少,僅52.77萬

2024下半年軟考報名人數 2024年上半年軟考考試共計報考52.77萬人,其中,初級資格5.12萬人、中級資格24.37萬人、高級資格23.28萬人。 根據往年報名人數,本次考試人數是減少了的,原因分析如下: 1、原來報名熱門專業系…

C++的unique_ptr::release

釋放給調用方返回的存儲指針的所有權,并將存儲的指針值設置為nullptr。 使用 release接管unique_ptr存儲的原始指針的所有權。 調用方負責返回的指針的刪除。 unique-ptr設置為空的默認構造狀態。 在調用到release后,您可以將兼容類型的另一個指針分配到…

SSL證書申請需要多久?

SSL證書作為一種重要的網絡安全工具,能夠確保網站數據傳輸的安全,保護用戶隱私和企業數據不受侵害。本文將詳細介紹SSL證書的申請流程以及所需時間,幫助用戶更好地規劃和實施網絡安全策略。 SSL證書,也稱為TLS證書或HTTPS證書&am…

rest_asyncio 簡化和管理異步python編程中的 REST API 調用

簡介 rest_asyncio 是一個 Python 庫,用于簡化和管理異步編程中的 REST API 調用。它結合了 aiohttp 和 asyncio,提供了一種高效的方式來處理網絡請求和響應,特別是在需要大量并發請求的場景下,例如爬蟲、批量數據獲取或實時數據處理。 以下是 rest_asyncio 的主要功能和…

富格林:領會正規阻撓欺詐技巧

富格林悉知,在當今經濟不穩定的環境下,投資者們越來越傾向于將資金投入到相對安全和穩定的資產中,而黃金往往是他們的首選之一。但現貨黃金市場相對復雜,因此要想在這個市場中立足腳跟就得領會正規阻撓欺詐的技巧。以下富格林為大…

如何優化工時表管理,提升團隊效率?

時間就是金錢,對于企業來說,有效的工時表管理可以讓一切變得不同。 本文將介紹控制工時表并將業務推向新高度的策略和工具。從多級審批工作流程到利用技術,了解如何克服常見挑戰,收獲簡化工時管理流程的回報。 工時表管理,工時表…

Ardupilot開源飛控之AP_Follow

Ardupilot開源飛控之AP_Follow 1. 源由2. 定義2.1 ModeFollow類2.1.1 ModeFollow::update2.1.2 ModeFollow::_enter2.1.3 ModeFollow::_exit 2.2 AP_Follow類2.2.1 AP_Follow::handle_msg2.2.2 AP_Follow::get_target_location_and_velocity2.2.3 AP_Follow::get_velocity_ned …

getContentView(mBinding.getRoot()); 會導致內存泄露嗎?里面有SurfaceView ViewBinding

在上述代碼中,ActivityTestingBinding 是一個 Data Binding 庫生成的類,用于綁定 XML 布局到 Activity 中。inflate(getLayoutInflater()) 用于將布局文件解析并轉換為對應的視圖層次結構。然后 getWindow().setFlags() 設置窗口屬性,保持屏幕…

小型海外倉如何選擇第三方海外倉系統:多看多對比,性價比優先

在現在的海外倉市場中,中小型海外倉,家庭海外倉的占比還是非常大的。這類海外倉的一個共同點就是資金有限,管理能力比較弱,很難實現規模效應。 對于這類海外倉來說,選擇一套合適的第三方海外倉系統,對提升…

好用的國產大文件傳輸軟件有哪些,快來看看吧

在這個數字化飛速發展的時代,我們每天都在與各種文件打交道,從簡單的文檔到龐大的視頻素材,文件的體積越來越大,傳統的文件傳輸方式逐漸顯得力不從心。面對這個挑戰,大文件傳輸軟件應運而生,它們不僅解決了…

note-網絡是怎樣連接的4 接入網和網絡運營商

助記提要 網絡包從用戶傳輸到互聯網的過程信號的調制方式ADSL使用多個頻率的合成波傳輸信號分離器的作用電話線的特點光纖的構造光纖的原理單模光纖和多模光纖光纖接入網的兩種接入方式PPP撥號上網過程ADSL和FTTH使用PPPoE的方式PPPoE的規則隧道其他接入認證方式 PPPoA和DHCP網…

基于大數據的高校生源可視化分析系統

基于大數據的高校生源可視化分析系統 “A Visual Analysis System for Higher Education Student Enrollment based on Big Data” 完整下載鏈接:基于大數據的高校生源可視化分析系統 文章目錄 基于大數據的高校生源可視化分析系統摘要第一章 引言1.1 研究背景1.2 研究目的1.…

adam優化器計算過程(tensorflow)

一、adam原理 原理 應用 優點 缺點 二、手動實現 一步一步計算 三、使用tensorflow api實現 api使用 四、一個具體的深度學習的例子

隨后記: uniapp uview u-dropdown 下拉菜單固定高度滑動不生效

使用u-dropdown 下拉組件 按照uview官網講解使用 配置根本不生效 scroll-y"true" style"height: 200rpx;" 但是在下拉的時候,不能上下滑動 ,原因是自帶的遮罩層擋住了 解決辦法:在下拉菜單打開和關閉的時候&#xff0c…

linux 目錄 /usr/lib和 /usr/lib64區別

在 Linux 系統中,/usr/lib 和 /usr/lib64 目錄通常用于存儲庫文件(libraries),這些庫文件是程序運行時所需的共享代碼和數據。這兩個目錄之間的主要區別在于它們所包含的庫文件的架構(architecture)和用途。…

Python函數式編程進階:用函數實現設計模式

文章目錄 函數式編程進階:用函數實現設計模式案例實現:構建“策略”模式使用函數實現”策略“模式享元 選擇最佳策略:簡單的方式 globals關鍵字 函數式編程進階:用函數實現設計模式 案例實現:構建“策略”模式 策略模…

Java 18新特性:探索Java的未來

目錄 1. 增強的模式匹配 2. JEP 411:String解構 3. JEP 395:Records增強 4. JEP 398:Deprecate警告增強 5. JEP 409:Sealed類和接口增強 6. API改進 6.1 集合API改進 6.2 流API改進 6.3 IO/NIO API改進 7. 性能優化 7.…

從0開始帶你成為Kafka消息中間件高手---第三講

從0開始帶你成為Kafka消息中間件高手—第三講 實際上來說,每次leader接收到一條消息,都會更新自己的LEO,也就是log end offset,把最后一位offset 1,這個大家都能理解吧?接著各個follower會從leader請求同…

k8s 中svc映射的外部端口是如何監聽的,netstat命令為什么查不到?

在Kubernetes中,Service(服務)是一種抽象,用于將一組Pod(容器)公開為一個網絡服務。Service可以通過ClusterIP(集群內部IP)、NodePort(節點端口)或LoadBalanc…