C/C++ 開發(fā)庫(kù) | C/C++ Development Library 這里收集一些著名的 C/C++ 開發(fā)庫(kù)、SDK、類庫(kù)、可復(fù)用類與結(jié)構(gòu)代碼 等信息,列舉它們的介紹、參考和網(wǎng)站鏈接,為各位 C/C++ 程序員和愛好者提供檢索和查閱類庫(kù)的方便 下面收集的 C/C++ 類庫(kù)介紹整理來(lái)源于文章:C++ 資源之不完全導(dǎo)引(作者:曾毅、陶文),這篇文章曾發(fā)表于 2004 年 5 月《CSDN 開發(fā)高手》 上文中介紹的類庫(kù)有些已經(jīng)多年未見發(fā)布和網(wǎng)站內(nèi)容的更新了,特別是一些開源的項(xiàng)目。我檢查了作者提供的 鏈接地址 和項(xiàng)目的 活躍程度,更改內(nèi)容上的偏差并補(bǔ)全了重要說明。另外,增加了自己使用和了解的 C/C++ 類庫(kù)的介紹 因?yàn)樵谙旅娴慕榻B中,自己也有大量未曾使用和了解的開發(fā)庫(kù)、類庫(kù),所以介紹如有紕漏和錯(cuò)誤,都可以告訴我 下面的 C/C++ 開發(fā)庫(kù)、類庫(kù)會(huì)不定期更新 更新說明列表 (Last Update: 2011-02) 目錄
C/C++ 標(biāo)準(zhǔn)庫(kù)與運(yùn)行時(shí)庫(kù) | C/C++ Standard & Runtime Library 實(shí)現(xiàn) ISO 的 C/C++ 語(yǔ)言規(guī)格標(biāo)準(zhǔn)中要求的標(biāo)準(zhǔn)庫(kù),每個(gè)組織或廠家的實(shí)現(xiàn)均有差異。在鏈接的二進(jìn)制庫(kù)中通常還伴隨實(shí)現(xiàn)了平臺(tái)特定的基礎(chǔ)運(yùn)行時(shí)庫(kù),例如 POSIX 標(biāo)準(zhǔn)。 ISO C/C++/POSIX 的標(biāo)準(zhǔn)如下:
Microsoft C Run-Time Libraries & Standard C++ Library
微軟的這一套運(yùn)行時(shí)庫(kù),在功能和鏈接庫(kù)上分為 3 個(gè)部分:Run-Time Libraries (CRT)、Standard C++ Library、CRT for Managed Code,分別對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)為:msvcr[ver].dll、msvcp[ver].dll、msvcm[ver].dll。 VC8、VC9 采用了 Side-by-Side (WinSxS, Manifest) 方式部署 CRT 庫(kù),但在 VC10 中又去掉了 Side-by-Side 的部署方式。在 %SystemRoot%/system32 中有一個(gè)隨 Windows 發(fā)布的 Known DLL:msvcrt.dll;而帶版本號(hào) [ver] 的庫(kù)在 VC 或 VC Redistributable Package 中發(fā)布。 VC7 之后在 namespace stdext 中提供 hash_map、hash_set 兩個(gè)擴(kuò)展標(biāo)準(zhǔn)的容器模板。 GNU C/C++ Library
通常稱為 GNU libc 和 libstdc++,是 GNU 的 C/C++ 標(biāo)準(zhǔn)庫(kù)和運(yùn)行時(shí)庫(kù)的實(shí)現(xiàn),在各種 Linux 發(fā)行版中都會(huì)安裝該庫(kù),也是很多開源 C/C++ 程序選擇的基礎(chǔ)庫(kù)。另外 libc 和 libstdc++ 也被移植到各種平臺(tái)下,如 Windows 下的 MinGW 和 Cygwin 就包含 libc 和 libstdc++: MinGW MinGW: Minimalist GNU for Windows,在 Windows 平臺(tái)提供一套 GNU 的開發(fā)環(huán)境,包括工具和開發(fā)庫(kù)。MinGW 中包括對(duì) GCC 和 GNU libc、libstdc++ 的 Windows 移植。 Cygwin 發(fā)源于 RedHat 的 Cygwin 項(xiàng)目,目標(biāo)在于在 Windows 下建立一套 Unix/Linux 環(huán)境,包括 X Window 這種 Linux GUI 基礎(chǔ)庫(kù)在內(nèi),所以又叫 Cygwin/X。Cygwin 實(shí)現(xiàn)的重點(diǎn)是 cygwin1.dll,它向其它 Cygwin 程序提供 POSIX 接口,并在內(nèi)部轉(zhuǎn)換成 Windows API 調(diào)用。Cygwin 中包括對(duì) GCC 和 GNU libc、libstdc++ 的 Windows 移植。 Tiny C Runtime Library 一個(gè)小巧的 Windows 平臺(tái) CRT 庫(kù)實(shí)現(xiàn),可用來(lái)替換對(duì) Microsoft CRT 庫(kù)的鏈接,達(dá)到精簡(jiǎn)依賴的基礎(chǔ)庫(kù)、減小最終發(fā)布程序大小的作用。 SGI STL SGI 公司的 C++ 標(biāo)準(zhǔn)模版庫(kù)。 STLport SGI STL 庫(kù)的跨平臺(tái)可移植版本。 Dinkumware C++ Library P.J. Plauger 編寫的高品質(zhì)的標(biāo)準(zhǔn)庫(kù)。P.J. Plauger 博士是 Dr. Dobb's 程序設(shè)計(jì)杰出獎(jiǎng)的獲得者。其編寫的庫(kù)長(zhǎng)期被 Microsoft 采用,并且 Borland 也取得了其 OEM 的 license,在其 C/C++ 的產(chǎn)品中采用 Dinkumware 的庫(kù)。 RogueWave Standard C++ Library 這個(gè)庫(kù)在 Borland C++ Builder 的早期版本中曾經(jīng)被采用,后來(lái)被其它的庫(kù)給替換了。不推薦使用。 模式復(fù)用與基礎(chǔ)功能 | Pattern Reuse & Basic Function 其實(shí)這個(gè)分類的界限很難確定,原因是有一些 C/C++ 庫(kù)提供各種各樣的模式形式,在功能上也包羅萬(wàn)象,并不專一,屬于綜合性功能。但在目標(biāo)上這些庫(kù)都是一致的:加強(qiáng) C/C++ 語(yǔ)言的功能、復(fù)用度,提供穩(wěn)定的基礎(chǔ)功能。什么是基礎(chǔ)功能?應(yīng)該是那些不依賴于平臺(tái),每個(gè)應(yīng)用可能都會(huì)用到的功能,例如:字符串、通用算法和容器等。 Boost
Boost 是高質(zhì)量、可移植、開放源代碼的 C++ 庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是 C++ 標(biāo)準(zhǔn)化進(jìn)程之一。Boost 庫(kù)由 C++ 標(biāo)準(zhǔn)委員會(huì)庫(kù)工作組成員發(fā)起,在 C++ 社區(qū)中影響甚大。Boost 庫(kù)為我們帶來(lái)了最新、最酷、最實(shí)用的技術(shù),是不折不扣的“準(zhǔn)標(biāo)準(zhǔn)庫(kù)”。 Boost 不是一個(gè)庫(kù),而是一組庫(kù),每一個(gè) Boost 庫(kù)都是一個(gè)相對(duì)獨(dú)立的功能(通常在一個(gè)子目錄下發(fā)布),可以獨(dú)立鏈接和使用,一般稱 Boost 中的 xxx 庫(kù)為 Boost.xxx。有些 Boost 庫(kù)根本不用編譯成二進(jìn)制的靜態(tài)或動(dòng)態(tài)鏈接庫(kù)形式,只要在應(yīng)用它的源碼中 include 包含它的頭文件就可以直接使用,稱為 Header-Only 庫(kù),如 Boost.Lambda。 Boost 由于其對(duì)跨平臺(tái)的強(qiáng)調(diào),對(duì)標(biāo)準(zhǔn) C++ 的強(qiáng)調(diào),是編寫平臺(tái)無(wú)關(guān),現(xiàn)代 C++ 的開發(fā)者必備的工具。但是 Boost 中也有很多是實(shí)驗(yàn)性質(zhì)的東西,在實(shí)際的開發(fā)中實(shí)用需要謹(jǐn)慎。并且很多 Boost 中的庫(kù)功能堪稱對(duì)語(yǔ)言功能的擴(kuò)展,其構(gòu)造用盡精巧的手法,不要貿(mào)然的花費(fèi)時(shí)間研讀。Boost 另外一面,比如 Graph 這樣的庫(kù)則是具有工業(yè)強(qiáng)度,結(jié)構(gòu)良好,非常值得研讀的精品代碼,并且也可以放心的在產(chǎn)品代碼中多多利用。 另外,Boost 的官方文檔也是相當(dāng)漂亮的,講述的清晰明了:從 概念 到 示例都有,在開源庫(kù)中是不可多得的。 除了 Boost 發(fā)布包中包括的庫(kù)之外,還有一些庫(kù)處于提交待審成為 Boost 庫(kù)的狀態(tài) (Proposal),或處于尚在測(cè)試和評(píng)審階段 (TR),Boost 發(fā)布包中未將這些庫(kù)包含進(jìn)來(lái),可以從這些庫(kù)的專項(xiàng)地址下載,例如用于日志的Boost.Log庫(kù)。 列舉 Boost 中的幾個(gè)庫(kù):
Loki
Loki 的作者就是大名頂頂?shù)?Andrei Alexandrescu,"Modern C++ Design"(《C++ 設(shè)計(jì)新思維》)一書的作者,Boost 和C++0x 的推動(dòng)者之一。 Loki 早期是 "Modern C++ Design" 一書的附帶類庫(kù),是實(shí)驗(yàn)和教學(xué)性質(zhì)的庫(kù)。但隨著作者的維護(hù)、更新和改進(jìn),Loki 現(xiàn)在已經(jīng)在復(fù)用性和穩(wěn)定性上已逐漸成熟了。 Loki 中把 C++ 模板的功能發(fā)揮到了極致。嘗試把類似 設(shè)計(jì)模式 這樣思想層面的東西通過庫(kù)來(lái)提供。同時(shí)還提供了智能指針這樣比較實(shí)用的功能。 stlsoft stlsoft 從名字都可以知道是 STL 的擴(kuò)展功能庫(kù),這一點(diǎn)和 Boost 的定位很像。stlsoft 的作者是 Matthew Wilson,stlsoft 也有配套的書籍 "Extended STL" 共兩卷: Extended STL, Volume 1: Collections and Iterators Extended STL, volume 2: Adaptors, Algorithms, Allocators, Functions, Ranges and Views stlsoft 包含一些基本的通用功能,例如字符串處理 (stlsoft/string/),當(dāng)然這是基于 std::basic_string 的處理。stlsoft 最吸引人的地方是:免費(fèi) 和 全部的功能都是 Header-Only 的,使用時(shí)只要包含頭文件即可。 字符串處理 | String Handling 通用的字符串處理功能,可以劃分到 模式復(fù)用與基礎(chǔ)功能 | Pattern Reuse & Basic Function 類別中,但為了查閱方便,還是把它分離出來(lái)了。包括:字符串的類包裹對(duì)象、格式化字符串、Tokenizer、分詞、正則表達(dá)式處理 等。當(dāng)然 C/C++ 的標(biāo)準(zhǔn)庫(kù),以及很多應(yīng)用框架和 GUI 庫(kù)中,也都有字符串處理相關(guān)的功能實(shí)現(xiàn)(如:strtok()、std::basic_string、std::basic_stringstream、 ATL/MFC 的 CStringT 等),這里就不再列出這些功能了,有需要可以參考 MSDN Library 和 www.、www. 等一些 C/C++ 參考網(wǎng)站。 Boost 中的字符串處理相關(guān)庫(kù) 上面說了 Boost 是一套包羅萬(wàn)象的通用功能 C++ 庫(kù),下面列出一些 Boost 中的和字符串處理相關(guān)的庫(kù):
另外 Boost 中還有 lexical_cast(數(shù)值/字符串轉(zhuǎn)換)、Format(類似 printf() 的格式化)、Spirit(EBNF 解析)等和字符串/文本處理有關(guān)的庫(kù)。 Common Text Transformation Library:http://cttl./,基于標(biāo)準(zhǔn)庫(kù) std::basic_string 的字符串處理擴(kuò)展功能,有 EBNF 解析功能。 GRETA:http://research.microsoft.com/,微軟 Research 的正則表達(dá)式模板庫(kù)項(xiàng)目(已停止維護(hù)),支持 Perl 兼容的正則表達(dá)式處理。 應(yīng)用框架與圖形用戶界面 | Application Framework & GUI 通用的應(yīng)用程序開發(fā)框架庫(kù),通常以 GUI 為其重要的組成部分,但絕不止于 GUI,功能上小到 字符串,中到 網(wǎng)絡(luò)通信,大到 層次架構(gòu)都有可能支持。并且應(yīng)用框架庫(kù)不只是庫(kù)的復(fù)用,而可能會(huì)引導(dǎo)程序員的程序架構(gòu)設(shè)計(jì),例如 MVC 架構(gòu)。一般情況下足以單獨(dú)依靠 某一個(gè)應(yīng)用框架庫(kù)來(lái)完成程序的開發(fā)。通常可以永葆活力的應(yīng)用框架庫(kù)背后都是有實(shí)力的組織或公司,穩(wěn)定性比一般的庫(kù)要強(qiáng)。 MFC MFC (Microsoft Foundation Class) 微軟基礎(chǔ)類庫(kù),構(gòu)建于 Windows API 之上,提供 OO 的接口風(fēng)格。在 .Net Framework 成名前,MFC 是 Windows 平臺(tái)開發(fā)程序主框架的首選,現(xiàn)在由 .Net Framework 接過這個(gè)任務(wù)。 ATL/WTL
ATL (Active Template Library) 是一組輕量級(jí)、高效的模板類,提供 GP 的接口風(fēng)格,這些類為創(chuàng)建 COM 組件提供了基本的功能。 有一部分類和代碼在 ATL 和 MFC 之間是共享的 (ATL/MFC Shared Classes),例如 實(shí)現(xiàn) CString 的 CStringT 模板。 WTL 是基于 ATL 的一個(gè)庫(kù)。使用了大量 ATL 的輕量級(jí)手法、模板等技術(shù),在代碼尺寸,以及速度優(yōu)化方面做得非常到位。主要應(yīng)用目標(biāo)是 COM 輕量級(jí)網(wǎng)絡(luò)下載的可視化控件 (ActiveX)。 不過微軟的商業(yè)策略,包括 MFC 和風(fēng)頭上的 .Net Framework,WTL 早就被微軟冷落了,最近的官方版本是 2007 年發(fā)布的 WTL 8.0,不過在 Sourceforge 的 WTL 項(xiàng)目中,于 2009 年發(fā)布了 WTL 8.1。 wxWidgets 由社區(qū)維護(hù)的開源跨平臺(tái) C++ 通用程序框架和 GUI 類庫(kù)。wxWidgets 原來(lái)也叫 wxWindows,但由于微軟的緣故更名為 wxWidgets。wxWidgets 的層次結(jié)構(gòu)類似 MFC,熟悉 MFC 的人可以很快上手 wxWidgets。wxWidgets 使用基于運(yùn)行平臺(tái)的 Native API 實(shí)現(xiàn),對(duì)于 Windows 來(lái)說就是 Windows API,對(duì)于 Linux 則可能是 GTK+ 或 X11。 除了 C++ 作為開發(fā)接口語(yǔ)言外,wxWidgets 最著名的其它語(yǔ)言封裝接口是 Python 的封裝接口:wxPython wxWidgets 項(xiàng)目的活躍程度和更新、維護(hù)一直都很穩(wěn)定,是值得長(zhǎng)久信賴的通用程序框架和 GUI 類庫(kù)。 GTK+/gtkmm GTK+ (GIMP Toolkit) 是一個(gè)采用面向?qū)ο笤O(shè)計(jì)的使用 C 語(yǔ)言開發(fā)的 GUI 窗口開發(fā)庫(kù)。最早作為 GIMP 繪圖工具的基礎(chǔ)庫(kù)而開發(fā)。GTK+ 是 GNOME 桌面環(huán)境的基礎(chǔ)庫(kù)。gtkmm 是 GTK+ 的 C++ 語(yǔ)言封裝。 Qt Qt 原來(lái)是 Trolltech 公司的一個(gè)跨平臺(tái)的 C++ GUI 框架,后來(lái)被 Nokia 收購(gòu)成為其一個(gè)子部門。Qt 是另一個(gè)著名桌面環(huán)境 KDE 的基礎(chǔ)庫(kù)。和 GTK+ 不同,Qt 一開始就選擇 C++ 作為實(shí)現(xiàn)其完全面向?qū)ο罂蚣艿拈_發(fā)語(yǔ)言。 這些庫(kù)是包含了多種功能的綜合性開發(fā)庫(kù)、類庫(kù),一般目標(biāo)是提供可移植的基礎(chǔ)設(shè)施服務(wù),例如 線程、網(wǎng)絡(luò)功能 等。 P::Classes 活躍程度:2004-03 發(fā)布版本 1.0.0 beta1,2005-01 網(wǎng)站最近消息貼出 "We are not dead!" [2010-11 checked] 一個(gè)高度可移植的 C++ 應(yīng)用程序框架。當(dāng)前關(guān)注類型和線程安全的 Signal/Slot 機(jī)制,I/O 系統(tǒng)包括基于插件的網(wǎng)絡(luò)協(xié)議透明的 I/O 架構(gòu),基于插件的應(yīng)用程序消息日志框架,訪問 SQL 數(shù)據(jù)庫(kù)的類等。 ACDK 活躍程度:2006-03 公告 CVS 版下載 ACDK 5 a2 [2010-11 checked] ACDK (Artefaktur Component Development Kit) 是一個(gè)平臺(tái)無(wú)關(guān)的 C++ 組件框架,目標(biāo)是實(shí)現(xiàn)類似于 Java 或者 .NET 中的框架,涉及的方面有:反射機(jī)制、線程、Unicode、廢料收集、正則表達(dá)式、I/O、網(wǎng)絡(luò)、SSL、SQL、實(shí)用工具、XML 等。還包括對(duì) Java、Perl、Python、TCL、Lisp、COM 和 CORBA 的集成。 dlib C++ library 活躍程度:2010-11 發(fā)布版本 17.32 [2010-11 checked] 提供多種功能的跨平臺(tái)綜合庫(kù)。涉及的方面有:數(shù)值計(jì)算 (Matrix)、網(wǎng)絡(luò)功能 (Socket, streambuf, HTTP server)、線程、GUI、機(jī)器學(xué)習(xí)、圖像處理(BMP 位圖)、數(shù)據(jù)壓縮與摘要、日志、單元測(cè)試框架、命令行解析、XML 解析、容器、序列化、BASE64 編解碼、內(nèi)存池管理 等。 Chilkat C++ Libraries 活躍程度:2010-07 發(fā)布 VC6-VC10 編譯版本 9.1.0 [2010-11 checked] 提供一組庫(kù),包括:Zip、Mail、IMAP、加解密、MHT、XML、字符集、MIME、PFX、FTP 等。 PTypes 活躍程度:2007-06 發(fā)布版本 2.1.1 [2010-11 checked] 可以作為 STL 的簡(jiǎn)單替代品,提供可移植的線程(同步對(duì)象)和網(wǎng)絡(luò)(Socket 和 命名管道)支持,也包括字符串、變體 (variant)、字符集、鏈表 等基礎(chǔ)類型的實(shí)現(xiàn)。主要應(yīng)用目標(biāo)是的網(wǎng)絡(luò)服務(wù)程序 和 robots 等。 LFC 活躍程度:2002-06 發(fā)布版本 0.5 [2010-11 checked] 一個(gè)提供通用目標(biāo)的 C++ 類庫(kù)、框架,涉及的方面有:通用數(shù)據(jù)結(jié)構(gòu)、通用算法、文件、Socket、線程、GUI、數(shù)據(jù)庫(kù)訪問、通用設(shè)計(jì)模式、數(shù)據(jù)流、RTTI、持久化、多媒體(包括游戲開發(fā)與 3D 圖形)、通用網(wǎng)絡(luò)協(xié)議 (HTTP, FTP)、正則表達(dá)式 等。 線程 | Threads pthreads
由 POSIX 定義的線程實(shí)現(xiàn)規(guī)范 POSIX threads,C 語(yǔ)言的 API,在各種 Unix/Linux 和 Windows 下都有支持,是一套移植性很好的通用線程庫(kù)。 C++ Threads 活躍程度:2003-10 發(fā)布版本 3.6 [2010-11 checked] C++ 封裝的線程類,用于 Linux 開發(fā)的多線程支持。 ZThreads 活躍程度:2005-03 發(fā)布版本 2.3.2 [2010-11 checked] 一個(gè)跨平臺(tái),面向?qū)ο笤O(shè)計(jì)的線程和同步事務(wù)庫(kù)。在 POSIX 和 Windows 下經(jīng)過測(cè)試。 科學(xué)與并行計(jì)算 | Scientific & Parallel Computation 這個(gè)一開始可以分為兩類:關(guān)于 數(shù)值計(jì)算 (Numeric Computation) 和 并行計(jì)算 的庫(kù),但是有相當(dāng)一部分庫(kù)同時(shí)涵蓋這兩種功能,并且現(xiàn)代的用于數(shù)學(xué)計(jì)算的程序越來(lái)越依靠并行處理來(lái)提升性能,所以就歸到了一類。 Blitz++ Blitz++ 是一個(gè)高效的數(shù)值計(jì)算函數(shù)庫(kù),它的目的是建立一套具有 C++ 方便接口,同時(shí)又比 Fortran 速度更快的數(shù)值計(jì)算環(huán)境。通常,用 C++ 所寫出的數(shù)值程序,比 Fortran 慢 20% 左右,因此 Blitz++ 正是要改掉這個(gè)差距。方法是利用 C++ 的 template 技術(shù),程序執(zhí)行甚至可以比 Fortran 更快。 CGAL CGAL (Computational Geometry Algorithms Library) 是高效幾何計(jì)算方面的 C++ 類庫(kù),CGAL 也有 Python 和 Matlab 的 API 接口。CGAL 應(yīng)用的領(lǐng)域有:圖形學(xué)、可視化、輔助設(shè)計(jì)與建模、GIS 等。 POOMA POOMA (Parallel Object-Oriented Methods and Applications) 原先是由 Los Alamos National Laboratory (LANL) 開發(fā)的用于并行計(jì)算的 C++ 類庫(kù)。 POOMA 提供近似于數(shù)學(xué)語(yǔ)法的高層語(yǔ)法,來(lái)簡(jiǎn)化算法的編程,并且自動(dòng)處理多處理器之間的通信事務(wù)。POOMA 被用于物理模型的計(jì)算,例如:粒子物理計(jì)算。 FreePOOMA 是 POOMA 的繼續(xù)項(xiàng)目,原先的 POOMA 已經(jīng)很少維護(hù)了。 MTL MTL (Matrix Template Library) 提供 矩陣 和 線性代數(shù) 計(jì)算的功能,是一個(gè)基于模板泛型設(shè)計(jì),以高性能計(jì)算 (HPC: High-performance computing) 為目標(biāo)的類庫(kù)。 MTL 有 2 個(gè)版本:MTL4 和 MTL2,MTL4 是 2005 后重寫的庫(kù)。 OpenMP
OpenMP 不是一套復(fù)用目的的開發(fā)庫(kù),而是一組用于共享內(nèi)存并行系統(tǒng)的多線程程序的一套指導(dǎo)規(guī)范,它由編譯和運(yùn)行環(huán)境支持,最新的 GCC、ICC、VC 都對(duì) OpenMP 有所支持。OpenMP 規(guī)范支持的語(yǔ)言包括 C、C++ 和 Fortran。開發(fā)時(shí),在源碼中使用編譯指示 (directive, #pragma) 指導(dǎo)編譯器并行化,編譯器自動(dòng)將程序并行化,并在必要之處加入同步互斥語(yǔ)義。 Intel Compilers and Libraries
本來(lái)不想把 Intel Compilers and Libraries 放到這一類的,因?yàn)檫@個(gè)軟件包含了除 開發(fā)庫(kù) 外的編譯和其它工具,但是由于使用此軟件包能夠在 Intel 平臺(tái)下開發(fā)和生成出色性能的程序,以及對(duì)并行計(jì)算的強(qiáng)力支持,還是把它列出來(lái)了。這個(gè)軟件包以及從 ICC 編譯器增大到包括 VTune、Amplifier、Inspector、MKL (Math Kernel Library) 等各種性能工具和庫(kù)的開發(fā)套件,是開發(fā) Intel 平臺(tái)高性能、并發(fā)程序的強(qiáng)力工具。 網(wǎng)絡(luò)功能 | Network Communication 很多通用庫(kù)和應(yīng)用框架庫(kù),如 Boost.Asio,都有網(wǎng)絡(luò)通信功能、異步網(wǎng)絡(luò) I/O 功能 (AIO) 或 Socket 封裝庫(kù),這里只列出以 網(wǎng)絡(luò)通信功能 為主要目的的開發(fā)庫(kù)。 ACE
ACE (Adaptive Communication Environment) 中文譯為 自適應(yīng)通訊環(huán)境,由 Douglas Schmidt 發(fā)起,它是一套重量級(jí)的 C++ 網(wǎng)絡(luò)/通信功能庫(kù),使用很多面向?qū)ο蟮脑O(shè)計(jì)模式,支持多平臺(tái)。ACE 框架實(shí)現(xiàn)很多概念,如:事件多路分離和事件處理器分派、信號(hào)處理、服務(wù)初始化、進(jìn)程間通信、共享內(nèi)存管理、消息路由、分布式服務(wù)動(dòng)態(tài)配置、并發(fā)執(zhí)行和同步 等 關(guān)于 ACE 的簡(jiǎn)介、評(píng)價(jià)、學(xué)習(xí)步驟和資料,參考 《學(xué)之者生,用之者死:ACE 歷史與簡(jiǎn)評(píng)》by 陳碩 A Stream Socket API for C++:http://www.pcs./ 一個(gè) Socket 封裝庫(kù) A simple IOCP Server/Client Class:http://www./ Windows Socket + IOCP 完成端口封裝庫(kù),一個(gè)小巧而高效的 Windows 網(wǎng)絡(luò)處理類,文檔中文翻譯 XML 功能 | XML Functions XML 是現(xiàn)代通用的數(shù)據(jù)保存格式,因?yàn)樗耐ㄓ眯院透袷搅己枚x,被經(jīng)常用在 數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)交換 和 接口說明 等功能中。先列舉一些 XML 解析器 (XML Parser): TinyXML:http://www./tinyxml/,一個(gè)輕量級(jí)的 XML Parser. MSXML
微軟的 XML Parser,全稱 Microsoft Core XML Services,采用 COM 的接口操作形式,提供 DOM 和 SAX2 API、XML Schema (XSD)、XPath、XSLT 功能。 xml4c:http://www.alphaworks.ibm.com/tech/xml4c,IBM 的重量級(jí) XML Parser,C++ 實(shí)現(xiàn),支持 100 多種字符編碼。 Xerces:http://xml./xerces-c,Apache 的 XML Parser,支持少數(shù)的字符編碼,如 ASCII、UTF-8、UTF-16 等,功能包括驗(yàn)證 DTD、SAX 和 DOM API 等。 libxml++:http://libxmlplusplus./,對(duì)的libxml (The XML C parser and toolkit of Gnome) 解析器的 C++ 封裝。 XMLBooster:http://www./,使用 DOM 和 SAX 兩大主流 XML 解析辦法之外的解析器。 下面列舉一些 XML 的功能庫(kù): Xalan:http://xml./xalan-c/,Xalan 可以將 XML 文檔轉(zhuǎn)換為 HTML、純文本或者其它 XML 類型文檔。 gSOAP:http://gsoap2./,SOAP/Web Services 的一個(gè) C++ 開源實(shí)現(xiàn)。 SOAP/Web Services in ATL Server
這是微軟的 SOAP/Web Services 功能。原先微軟有一個(gè) SOAP Toolkit 的庫(kù),實(shí)現(xiàn) SOAP/Web Services 功能,但后來(lái)被廢棄了,并移入了 .Net 框架中。所以要使用本地代碼 C/C++ 實(shí)現(xiàn)的 SOAP,就要使用 ATL Server 庫(kù)中的 SOAP/Web Services 功能。ATL Server 庫(kù)除了 SOAP 之外還提供其它 Web 功能,例如 HTTP 實(shí)現(xiàn)。 eXist:http://exist./,持續(xù)化 XML 存儲(chǔ),XML 數(shù)據(jù)庫(kù)。 Simple XML Persistence Library (SXP):http://sxp./,將對(duì)象序列化為 XML 的輕量級(jí)的 C++ 庫(kù),用于持久存儲(chǔ)。 持久存儲(chǔ) | Persistence & Storage 通常 持久存儲(chǔ) 表示的概念包括:(1) 將類型(POD 類型、類對(duì)象、容器)序列化為二進(jìn)制數(shù)據(jù)。(2) 提供基于文件/流的操作。(3) 提供基于數(shù)據(jù)庫(kù)的操作。對(duì)于 (3) 各數(shù)據(jù)庫(kù)管理軟件 (DBMS) 大多都提供自己的 C/C++ API,在 Windows 下更有 ODBC、OLE/DB 這種中間適配層提供統(tǒng)一的操作接口。下面只列出一些輕量級(jí)、開源的持久化功能。 s11n:http:///,一個(gè)基于 STL 的 C++ 庫(kù),用于序列化 POD 類型、STL 容器以及用戶定義類型。 MySQL Connector/C++:MySQL 5.1 Connector/C++ 參考,MySQL 數(shù)據(jù)庫(kù)客戶端操作的 C++ API。默認(rèn)發(fā)布的 MySQL 安裝包中包含其 C 語(yǔ)言的 API (MySQL Connector/C)。 SQLite:http://www./,輕量級(jí)的 SQL DBMS,沒有 SQL 的服務(wù)器端,單純基于文件存儲(chǔ)。提供 API 支持,使用戶執(zhí)行 SQL 語(yǔ)句來(lái)查詢/操縱數(shù)據(jù),F(xiàn)irefox 3 就使用 SQLite 保存其配置數(shù)據(jù)。 Crypto++:Crypto++ Sourceforge Project,http://www./。C++ 封裝的加解密算法庫(kù)。Crypto++ 是各種算法的合集,包括對(duì)稱密碼、非對(duì)稱密碼、摘要算法。 OpenSSL:http://www./。C API 的加解密算法庫(kù),以及 SSL 協(xié)議實(shí)現(xiàn)。OpenSSL 不只是加解密算法庫(kù),還包含網(wǎng)絡(luò)功能(包括未使用和使用加密通道 SSL)和實(shí)用工具。 日志 | Logging Log for C++ (Log4cpp)
Log4cpp 主要用于 C++ 程序中寫日志,有著較強(qiáng)的跨平臺(tái)移植能力。除了日志功能外,Log4cpp 中包括很多可移植的基礎(chǔ)功能,例如:同步功能 (Condition, CriticalSection, Event, Mutex, Semaphore)、網(wǎng)絡(luò)功能 (Socket, ServerSocket, DatagramSocket, SocketInputStream, SocketOutputStream)、文件監(jiān)控 (FileWatchdog)、智能指針 (ObjectPtrT)、字符串處理 (StrictMath, StringHelper, StringTokenizer)、線程支持 等。 Boost.Log:http:///projects/boost-log/,用于日志記錄的 Boost 庫(kù),目前沒有放入 Boost 發(fā)布包中。 log4cxx:http://logging./log4cxx/,Apache 出的日志功能庫(kù)。 glog:http://code.google.com/p/google-glog/ Log4cplus:http://log4cplus./ Logging In C++:http://www./,這是 DrDobbs 上的一篇文章,教你怎么寫出一個(gè) C++ Logging 功能類。 函數(shù)式編程 | Functional Programming Boost.Lambda:Boost.Lambda 是 Boost 提供的函數(shù)式編程特性。 The Functional C++ Library (FC++):http://www.cc./,用模板庫(kù)來(lái)實(shí)現(xiàn) C++ 的函數(shù)式編程。 FACT!:http://www./,另一個(gè)實(shí)現(xiàn) C++ 函數(shù)式編程的模板庫(kù)。 雜項(xiàng) | MISC CppUnit:CppUnit Sourceforge Project,一個(gè) C++ 的單元測(cè)試框架,由 JUnit 移植而來(lái),使用派生測(cè)試類的方式產(chǎn)生測(cè)試用例。 更新說明列表 [2010-11] 最初撰寫 by Breaker [2010-12] 基本補(bǔ)全各個(gè)類別的開發(fā)庫(kù) [2010-12] 發(fā)現(xiàn)實(shí)際上有很多功能類似的開發(fā)庫(kù)、類庫(kù),在 Sourceforge.net 上一搜就一大堆。這樣列舉不好,記憶不深,費(fèi)時(shí),意義也很小,覺得需自己仔細(xì)用過,并深入理解、積累經(jīng)驗(yàn)后才能對(duì)一個(gè)庫(kù)有所了解,而列舉庫(kù)的形式可以用一些 網(wǎng)絡(luò)書簽服務(wù) 來(lái)做,更容易檢索 [2011-02] 1. 修正一些開發(fā)庫(kù)的收藏地址和描述 2. 在 Delicious 整理好了一個(gè) C/C++ 開發(fā)庫(kù) 標(biāo)簽 |
|
來(lái)自: Rain_Time > 《計(jì)算機(jī)編程》