C/C++ 类库开发库参考【资料整理】
轉(zhuǎn)自:http://bbs.chinaunix.net/thread-1858444-1-1.html
?? 這里收集一些著名的?C/C++?開發(fā)庫、SDK、類庫、可復(fù)用類與結(jié)構(gòu)代碼?等信息,列舉它們的介紹、參考和網(wǎng)站鏈接,為各位?C/C++?程序員和愛好者提供檢索和查閱類庫的方便。
?? 下面收集的?C/C++?類庫介紹整理來源于文章:C++?資源之不完全導(dǎo)引(作者:曾毅、陶文),這篇文章曾發(fā)表于?2004?年?5?月《CSDN?開發(fā)高手》。
??上文中介紹的類庫有些已經(jīng)多年未見發(fā)布和網(wǎng)站內(nèi)容的更新了,特別是一些開源的項(xiàng)目。我檢查了作者提供的?鏈接地址?和項(xiàng)目的?活躍程度,更改內(nèi)容上的偏差并補(bǔ)全了重要說明。另外,增加了自己使用和了解的?C/C++?類庫的介紹。
更新說明列表?(Last?Update:?2011-02)
目錄
·?C/C++?標(biāo)準(zhǔn)庫與運(yùn)行時(shí)庫?|?C/C++?Standard?&?Runtime?Library
模式復(fù)用與基礎(chǔ)功能?|?Pattern?Reuse?&?Basic?Function
·?字符串處理?|?String?Handling
·?應(yīng)用框架與圖形用戶界面?|?Application?Framework?&?GUI
·?通用功能?|?General?Function
·?線程?|?Threads
·?科學(xué)與并行計(jì)算?|?Scientific?&?Parallel?Computation
·?網(wǎng)絡(luò)功能?|?Network?Communication
·?XML?功能?|?XML?Functions
·?持久存儲?|?Persistence?&?Storage
·?加解密?|?Cryptographic
·?日志?|?Logging
·?函數(shù)式編程?|?Functional?Programming
·?雜項(xiàng)?|?MISC
·?-------------------------------------------?
C/C++?標(biāo)準(zhǔn)庫與運(yùn)行時(shí)庫?|?C/C++?Standard?&?Runtime?Library
實(shí)現(xiàn)?ISO?的?C/C++?語言規(guī)格標(biāo)準(zhǔn)中要求的標(biāo)準(zhǔn)庫,每個(gè)組織或廠家的實(shí)現(xiàn)均有差異。在鏈接的二進(jìn)制庫中通常還伴隨實(shí)現(xiàn)了平臺特定的基礎(chǔ)運(yùn)行時(shí)庫,例如?POSIX?標(biāo)準(zhǔn)。
ISO?C/C++/POSIX?的標(biāo)準(zhǔn)如下:
C99:?ISO/IEC?9899-1999?(C?Programming?languages)
·?
C++2003:?ISO/IEC?14882-2003?(C++?Programming?languages)
·?
C++0x:?ISO/IEC?FCD?14882?(C++?Programming?languages):第?3?版的?C++?語言標(biāo)準(zhǔn)。關(guān)注發(fā)布頁上的?Status?是否還是?Under?development。
·?
POSIX?Interface:?ISO_IEC?9945-2-2003?(POSIX?-?Part?2:?System?Interfaces)
Microsoft?C?Run-Time?Libraries?&?Standard?C++?Library
·?
MSDN?Run-Time?Library?Reference
·?
MSDN?C?Run-Time?Libraries:討論?Microsoft?CRT、Standard?C++?Library?對應(yīng)的?lib?和?dll?文件。
·?
MSDN?Standard?C++?Library?Reference:微軟的標(biāo)準(zhǔn)?C++?庫參考,包括?STL?子集的參考。
·?
MSDN?STL/CLR?Library?Reference:從?VC9?開始,微軟的?STL?分為兩種實(shí)現(xiàn),一種是傳統(tǒng)的?C++?本地代碼實(shí)現(xiàn),另一種是托管?C++?的?CLR?實(shí)現(xiàn),稱為?STL/CLR?庫。這里是?STL/CLR?庫的參考。
·?
What?Every?Computer?Programmer?Should?Know?About?Windows?API,?CRT,?and?the?Standard?C++?Library,?by?Alex?Blekhman:講述?Windows?API、Microsoft?CRT、Standard?C++?Library?之間的關(guān)系,以及運(yùn)行庫的?Unicode、字符集編碼問題,靜態(tài)與動(dòng)態(tài)鏈接問題。
微軟的這一套運(yùn)行時(shí)庫,在功能和鏈接庫上分為?3?個(gè)部分:Run-Time?Libraries?(CRT)、Standard?C++?Library、CRT?for?Managed?Code,分別對應(yīng)的動(dòng)態(tài)鏈接庫為:msvcr[ver].dll、msvcp[ver].dll、msvcm[ver].dll。
VC8、VC9?采用了?Side-by-Side?(WinSxS,?Manifest)?方式部署?CRT?庫,但在?VC10?中又去掉了?Side-by-Side?的部署方式。在?%SystemRoot%\system32?中有一個(gè)隨?Windows?發(fā)布的?Known?DLL:msvcrt.dll;而帶版本號?[ver]?的庫在?VC?或?VC?Redistributable?Package?中發(fā)布。
VC7?之后在?namespace?stdext?中提供?hash_map、hash_set?兩個(gè)擴(kuò)展標(biāo)準(zhǔn)的容器模板。
GNU?C/C++?Library
·?
GNU?C?Library
·?
Glibc?2?HOWTO?中文版
·?
The?GNU?C?Library?Manual
·?
GNU?C++?Library:libstdc++?在?GCC?Collection?中發(fā)布。
·?
The?GNU?C++?Library?Documentation
通常稱為?GNU?libc?和?libstdc++,是?GNU?的?C/C++?標(biāo)準(zhǔn)庫和運(yùn)行時(shí)庫的實(shí)現(xiàn),在各種?Linux?發(fā)行版中都會安裝該庫,也是很多開源?C/C++?程序選擇的基礎(chǔ)庫。另外?libc?和?libstdc++?也被移植到各種平臺下,如?Windows?下的?MinGW?和?Cygwin?就包含?libc?和?libstdc++:
MinGW
·?
MinGW?Home
·?
MinGW?Sourceforge?Project
MinGW:?Minimalist?GNU?for?Windows,在?Windows?平臺提供一套?GNU?的開發(fā)環(huán)境,包括工具和開發(fā)庫。MinGW?中包括對?GCC?和?GNU?libc、libstdc++?的?Windows?移植。
Cygwin
·?
Cygwin?Home
發(fā)源于?RedHat?的?Cygwin?項(xiàng)目,目標(biāo)在于在?Windows?下建立一套?Unix/Linux?環(huán)境,包括?X?Window?這種?Linux?GUI?基礎(chǔ)庫在內(nèi),所以又叫?Cygwin/X。Cygwin?實(shí)現(xiàn)的重點(diǎn)是?cygwin1.dll,它向其它?Cygwin?程序提供?POSIX?接口,并在內(nèi)部轉(zhuǎn)換成?Windows?API?調(diào)用。Cygwin?中包括對?GCC?和?GNU?libc、libstdc++?的?Windows?移植。
Tiny?C?Runtime?Library
·?
Tiny?C?Runtime?Library
一個(gè)小巧的?Windows?平臺?CRT?庫實(shí)現(xiàn),可用來替換對?Microsoft?CRT?庫的鏈接,達(dá)到精簡依賴的基礎(chǔ)庫、減小最終發(fā)布程序大小的作用。
SGI?STL
·?
SGI?STL?Programmer's?Guide
SGI?公司的?C++?標(biāo)準(zhǔn)模版庫。
STLport
·?
http://www.stlport.org/
SGI?STL?庫的跨平臺可移植版本。
Dinkumware?C++?Library
·?
http://www.dinkumware.com/
P.J.?Plauger?編寫的高品質(zhì)的標(biāo)準(zhǔn)庫。P.J.?Plauger?博士是?Dr.?Dobb's?程序設(shè)計(jì)杰出獎(jiǎng)的獲得者。其編寫的庫長期被?Microsoft?采用,并且?Borland?也取得了其?OEM?的?license,在其?C/C++?的產(chǎn)品中采用?Dinkumware?的庫。
RogueWave?Standard?C++?Library
·?
http://www.roguewave.com/
這個(gè)庫在?Borland?C++?Builder?的早期版本中曾經(jīng)被采用,后來被其它的庫給替換了。不推薦使用。
模式復(fù)用與基礎(chǔ)功能?|?Pattern?Reuse?&?Basic?Function
其實(shí)這個(gè)分類的界限很難確定,原因是有一些?C/C++?庫提供各種各樣的模式形式,在功能上也包羅萬象,并不專一,屬于綜合性功能。但在目標(biāo)上這些庫都是一致的:加強(qiáng)?C/C++?語言的功能、復(fù)用度,提供穩(wěn)定的基礎(chǔ)功能。什么是基礎(chǔ)功能?應(yīng)該是那些不依賴于平臺,每個(gè)應(yīng)用可能都會用到的功能,例如:字符串、通用算法和容器等。
Boost
·?
Boost?C++?Libraries?Home
·?
Boost?Library?Documentation:最新發(fā)布版?(Current?Release)?的?Boost?官方在線文檔。
·?
Boost?Libraries:Boost?中所有庫的?分類索引、概述?和?列表。
·?
Boost?文檔?中文翻譯?Google?組
·?
Boost?文檔?中文翻譯?Google?項(xiàng)目
·?
Boost?是高質(zhì)量、可移植、開放源代碼的?C++?庫,作為標(biāo)準(zhǔn)庫的后備,是?C++?標(biāo)準(zhǔn)化進(jìn)程之一。Boost?庫由?C++?標(biāo)準(zhǔn)委員會庫工作組成員發(fā)起,在?C++?社區(qū)中影響甚大。Boost?庫為我們帶來了最新、最酷、最實(shí)用的技術(shù),是不折不扣的“準(zhǔn)標(biāo)準(zhǔn)庫”。
Boost?不是一個(gè)庫,而是一組庫,每一個(gè)?Boost?庫都是一個(gè)相對獨(dú)立的功能(通常在一個(gè)子目錄下發(fā)布),可以獨(dú)立鏈接和使用,一般稱?Boost?中的?xxx?庫為?Boost.xxx。有些?Boost?庫根本不用編譯成二進(jìn)制的靜態(tài)或動(dòng)態(tài)鏈接庫形式,只要在應(yīng)用它的源碼中?include?包含它的頭文件就可以直接使用,稱為?Header-Only?庫,如?Boost.Lambda。
Boost?由于其對跨平臺的強(qiáng)調(diào),對標(biāo)準(zhǔn)?C++?的強(qiáng)調(diào),是編寫平臺無關(guān),現(xiàn)代?C++?的開發(fā)者必備的工具。但是?Boost?中也有很多是實(shí)驗(yàn)性質(zhì)的東西,在實(shí)際的開發(fā)中實(shí)用需要謹(jǐn)慎。并且很多?Boost?中的庫功能堪稱對語言功能的擴(kuò)展,其構(gòu)造用盡精巧的手法,不要貿(mào)然的花費(fèi)時(shí)間研讀。Boost?另外一面,比如?Graph?這樣的庫則是具有工業(yè)強(qiáng)度,結(jié)構(gòu)良好,非常值得研讀的精品代碼,并且也可以放心的在產(chǎn)品代碼中多多利用。
另外,Boost?的官方文檔也是相當(dāng)漂亮的,講述的清晰明了:從?概念?到?示例都有,在開源庫中是不可多得的。
除了?Boost?發(fā)布包中包括的庫之外,還有一些庫處于提交待審成為?Boost?庫的狀態(tài)?(Proposal),或處于尚在測試和評審階段?(TR),Boost?發(fā)布包中未將這些庫包含進(jìn)來,可以從這些庫的專項(xiàng)地址下載,例如用于日志的?Boost.Log?庫。
列舉?Boost?中的幾個(gè)庫:
Boost.Regex:正則表達(dá)式庫
·?
Boost.Spirit:LL?Parser?Framework,用?C++?代碼直接表達(dá)?EBNF
·?
Boost.Graph:圖組件和算法
·?
Boost.Lambda:在調(diào)用的地方定義短小匿名的函數(shù)對象,提供函數(shù)式編程?(Functional?Programming)?特性
·?
Boost?Concept?Check?Library?(BCCL):這不是一個(gè)復(fù)用庫,而是為了檢查?C++?泛型編程中的?concept
·?
Boost.MPL:用模板實(shí)現(xiàn)的元編程框架
·?
Boost.Thread:可移植的?C++?多線程庫
·?
Boost.Python:把?C++?類和函數(shù)映射到?Python?之中
·?
Pool:內(nèi)存池管理
·?
smart_ptr:6?個(gè)智能指針,參考:Smart?Pointers?in?Boost
Loki
·?
http://www.moderncppdesign.com/:作者?Andrei?Alexandrescu?及其著作?"Modern?C++?Design"?的網(wǎng)站。
·?
Loki?Home
Loki?的作者就是大名頂頂?shù)?Andrei?Alexandrescu,"Modern?C++?Design"(《C++?設(shè)計(jì)新思維》)一書的作者,Boost?和?C++0x?的推動(dòng)者之一。
Loki?早期是?"Modern?C++?Design"?一書的附帶類庫,是實(shí)驗(yàn)和教學(xué)性質(zhì)的庫。但隨著作者的維護(hù)、更新和改進(jìn),Loki?現(xiàn)在已經(jīng)在復(fù)用性和穩(wěn)定性上已逐漸成熟了。
Loki?中把?C++?模板的功能發(fā)揮到了極致。嘗試把類似?設(shè)計(jì)模式?這樣思想層面的東西通過庫來提供。同時(shí)還提供了智能指針這樣比較實(shí)用的功能。
stlsoft
·?
stlsoft?Home
·?
stlsoft?從名字都可以知道是?STL?的擴(kuò)展功能庫,這一點(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?類別中,但為了查閱方便,還是把它分離出來了。包括:字符串的類包裹對象、格式化字符串、Tokenizer、分詞、正則表達(dá)式處理?等。當(dāng)然?C/C++?的標(biāo)準(zhǔn)庫,以及很多應(yīng)用框架和?GUI?庫中,也都有字符串處理相關(guān)的功能實(shí)現(xiàn)(如:strtok()、std::basic_string、std::basic_stringstream、?ATL/MFC?的?CStringT?等),這里就不再列出這些功能了,有需要可以參考?MSDN?Library?和www.cppreference.com、www.cplusplus.com?等一些?C/C++?參考網(wǎng)站。
Boost?中的字符串處理相關(guān)庫
上面說了?Boost?是一套包羅萬象的通用功能?C++?庫,下面列出一些?Boost?中的和字符串處理相關(guān)的庫:
·?
Boost?String?Algorithms?Library:Boost?字符串算法庫,功能大多在頭文件?boost/algorithm/string.hpp?中集中聲明,并在?boost/algorithm/string/?下有分別功能的定義,在名字空間?boost::algorithm?中。這個(gè)?Boost?字符串算法庫通常和標(biāo)準(zhǔn)庫的字符串實(shí)現(xiàn)?std::basic_string?聯(lián)用,作為標(biāo)準(zhǔn)庫字符串功能的擴(kuò)展,例如可以做?tokenize?的算法?boost::algorithm::split()?或類?boost::algorithm::split_iterator,?boost::algorithm::token_finder。
·?
Boost.Tokenizer:Boost?專門提供的字符串?tokenize?分詞庫,在?boost/tokenizer.hpp?中聲明,和它相關(guān)的還有?分詞迭代器?(boost\token_iterator.hpp)?和?分詞工具類?(boost\token_functions.hpp)。
·?
Boost.Regex:上面已提到了,這是?Boost?的正則表達(dá)式功能實(shí)現(xiàn)。
另外?Boost?中還有?lexical_cast(數(shù)值/字符串轉(zhuǎn)換)、Format(類似?printf()?的格式化)、Spirit(EBNF?解析)等和字符串/文本處理有關(guān)的庫。
Common?Text?Transformation?Library:http://cttl.sourceforge.net/,基于標(biāo)準(zhǔn)庫?std::basic_string?的字符串處理擴(kuò)展功能,有?EBNF?解析功能。
GRETA:http://research.microsoft.com/,微軟?Research?的正則表達(dá)式模板庫項(xiàng)目(已停止維護(hù)),支持?Perl?兼容的正則表達(dá)式處理。
應(yīng)用框架與圖形用戶界面?|?Application?Framework?&?GUI
通用的應(yīng)用程序開發(fā)框架庫,通常以?GUI?為其重要的組成部分,但絕不止于?GUI,功能上小到?字符串,中到?網(wǎng)絡(luò)通信,大到?層次架構(gòu)都有可能支持。并且應(yīng)用框架庫不只是庫的復(fù)用,而可能會引導(dǎo)程序員的程序架構(gòu)設(shè)計(jì),例如?MVC?架構(gòu)。一般情況下足以單獨(dú)依靠?某一個(gè)應(yīng)用框架庫來完成程序的開發(fā)。通常可以永葆活力的應(yīng)用框架庫背后都是有實(shí)力的組織或公司,穩(wěn)定性比一般的庫要強(qiáng)。
MFC
·?
MFC?Reference
·?
ATL/MFC?Shared?Classes
MFC?(Microsoft?Foundation?Class)?微軟基礎(chǔ)類庫,構(gòu)建于?Windows?API?之上,提供?OO?的接口風(fēng)格。在?.Net?Framework?成名前,MFC?是?Windows?平臺開發(fā)程序主框架的首選,現(xiàn)在由?.Net?Framework?接過這個(gè)任務(wù)。
ATL/WTL
·?
ATL?Reference
·?
Windows?with?C++:?Windows?Template?Library?8.0
·?
Download?Details:?Windows?Template?Library?(WTL)?8.0:含?WTL?8.0,?7.5,?7.1,?7.0?版本的下載地址。
·?
WTL?Sourceforge?Project
ATL?(Active?Template?Library)?是一組輕量級、高效的模板類,提供?GP?的接口風(fēng)格,這些類為創(chuàng)建?COM?組件提供了基本的功能。
有一部分類和代碼在?ATL?和?MFC?之間是共享的?(ATL/MFC?Shared?Classes),例如?實(shí)現(xiàn)?CString?的?CStringT?模板。
WTL?是基于?ATL?的一個(gè)庫。使用了大量?ATL?的輕量級手法、模板等技術(shù),在代碼尺寸,以及速度優(yōu)化方面做得非常到位。主要應(yīng)用目標(biāo)是?COM?輕量級網(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
·?
wxWidgets?Home
·?
wxWidgets?Sourceforge?Project
·?
Cross?Platform?GUI?Programming?with?wxWidgets?中文翻譯,譯者:Wesley?Wang
由社區(qū)維護(hù)的開源跨平臺?C++?通用程序框架和?GUI?類庫。wxWidgets?原來也叫?wxWindows,但由于微軟的緣故更名為?wxWidgets。wxWidgets?的層次結(jié)構(gòu)類似?MFC,熟悉?MFC?的人可以很快上手?wxWidgets。wxWidgets?使用基于運(yùn)行平臺的?Native?API?實(shí)現(xiàn),對于?Windows?來說就是?Windows?API,對于?Linux?則可能是?GTK+?或?X11。
除了?C++?作為開發(fā)接口語言外,wxWidgets?最著名的其它語言封裝接口是?Python?的封裝接口:wxPython
wxWidgets?項(xiàng)目的活躍程度和更新、維護(hù)一直都很穩(wěn)定,是值得長久信賴的通用程序框架和?GUI?類庫。
GTK+/gtkmm
·?
GTK+
·?
gtkmm?-?C++?Interfaces?for?GTK+?and?GNOME
GTK+?(GIMP?Toolkit)?是一個(gè)采用面向?qū)ο笤O(shè)計(jì)的使用?C?語言開發(fā)的?GUI?窗口開發(fā)庫。最早作為?GIMP?繪圖工具的基礎(chǔ)庫而開發(fā)。GTK+?是?GNOME?桌面環(huán)境的基礎(chǔ)庫。gtkmm?是?GTK+?的?C++?語言封裝。
Qt
·?
Qt
Qt?原來是?Trolltech?公司的一個(gè)跨平臺的?C++?GUI?框架,后來被?Nokia?收購成為其一個(gè)子部門。Qt?是另一個(gè)著名桌面環(huán)境?KDE?的基礎(chǔ)庫。和?GTK+?不同,Qt?一開始就選擇?C++?作為實(shí)現(xiàn)其完全面向?qū)ο罂蚣艿拈_發(fā)語言。
?
通用功能?|?General?Function
這些庫是包含了多種功能的綜合性開發(fā)庫、類庫,一般目標(biāo)是提供可移植的基礎(chǔ)設(shè)施服務(wù),例如?線程、網(wǎng)絡(luò)功能?等。
P::Classes
·?
P::Classes?-?Protable?C++?Application?Framework
·?
P::Classes?Sourceforge?Project
活躍程度: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ù)庫的類等。
ACDK
·?
ACDK?Sourceforge?Project
活躍程度:2006-03?公告?CVS?版下載?ACDK?5?a2?[2010-11?checked]
ACDK?(Artefaktur?Component?Development?Kit)?是一個(gè)平臺無關(guān)的?C++?組件框架,目標(biāo)是實(shí)現(xiàn)類似于?Java?或者?.NET?中的框架,涉及的方面有:反射機(jī)制、線程、Unicode、廢料收集、正則表達(dá)式、I/O、網(wǎng)絡(luò)、SSL、SQL、實(shí)用工具、XML?等。還包括對?Java、Perl、Python、TCL、Lisp、COM?和?CORBA?的集成。
dlib?C++?library
·?
dlib?C++?library
活躍程度:2010-11?發(fā)布版本?17.32?[2010-11?checked]
提供多種功能的跨平臺綜合庫。涉及的方面有:數(shù)值計(jì)算?(Matrix)、網(wǎng)絡(luò)功能?(Socket,?streambuf,?HTTP?server)、線程、GUI、機(jī)器學(xué)習(xí)、圖像處理(BMP?位圖)、數(shù)據(jù)壓縮與摘要、日志、單元測試框架、命令行解析、XML?解析、容器、序列化、BASE64?編解碼、內(nèi)存池管理?等。
Chilkat?C++?Libraries
·?
Chilkat?C++?Libraries
活躍程度:2010-07?發(fā)布?VC6-VC10?編譯版本?9.1.0?[2010-11?checked]
提供一組庫,包括:Zip、Mail、IMAP、加解密、MHT、XML、字符集、MIME、PFX、FTP?等。
PTypes
·?
C++?Portable?Types?Library?(PTypes)
活躍程度:2007-06?發(fā)布版本?2.1.1?[2010-11?checked]
可以作為?STL?的簡單替代品,提供可移植的線程(同步對象)和網(wǎng)絡(luò)(Socket?和?命名管道)支持,也包括字符串、變體?(variant)、字符集、鏈表?等基礎(chǔ)類型的實(shí)現(xiàn)。主要應(yīng)用目標(biāo)是的網(wǎng)絡(luò)服務(wù)程序?和?robots?等。
LFC
·?
LFC
活躍程度:2002-06?發(fā)布版本?0.5?[2010-11?checked]
一個(gè)提供通用目標(biāo)的?C++?類庫、框架,涉及的方面有:通用數(shù)據(jù)結(jié)構(gòu)、通用算法、文件、Socket、線程、GUI、數(shù)據(jù)庫訪問、通用設(shè)計(jì)模式、數(shù)據(jù)流、RTTI、持久化、多媒體(包括游戲開發(fā)與?3D?圖形)、通用網(wǎng)絡(luò)協(xié)議?(HTTP,?FTP)、正則表達(dá)式?等。
線程?|?Threads
pthreads
·?
The?Open?Group?Base?Specifications?Issue?6,?IEEE?Std?1003.1:pthreads?規(guī)范。
·?
IBM?developerWorks?POSIX?線程主題:講解?pthreads?的各個(gè)方面,包括:POSIX?線程詳解、POSIX?線程編程、Linux?線程模型?(NPTL:?Native?POSIX?Threads?Library?for?Linux)。
·?
POSIX?Threads?(pthreads)?for?Win32:pthreads?的?Windows?移植版。
由?POSIX?定義的線程實(shí)現(xiàn)規(guī)范?POSIX?threads,C?語言的?API,在各種?Unix/Linux?和?Windows?下都有支持,是一套移植性很好的通用線程庫。
C++?Threads
·?
C++?Threads?Home
活躍程度:2003-10?發(fā)布版本?3.6?[2010-11?checked]
C++?封裝的線程類,用于?Linux?開發(fā)的多線程支持。
ZThreads
·?
ZThreads?Home
活躍程度:2005-03?發(fā)布版本?2.3.2?[2010-11?checked]
一個(gè)跨平臺,面向?qū)ο笤O(shè)計(jì)的線程和同步事務(wù)庫。在?POSIX?和?Windows?下經(jīng)過測試。
科學(xué)與并行計(jì)算?|?Scientific?&?Parallel?Computation
這個(gè)一開始可以分為兩類:關(guān)于?數(shù)值計(jì)算?(Numeric?Computation)?和?并行計(jì)算?的庫,但是有相當(dāng)一部分庫同時(shí)涵蓋這兩種功能,并且現(xiàn)代的用于數(shù)學(xué)計(jì)算的程序越來越依靠并行處理來提升性能,所以就歸到了一類。
Blitz++
·?
Blitz++?Home
·?
Blitz++?Sourceforge?Project
Blitz++?是一個(gè)高效的數(shù)值計(jì)算函數(shù)庫,它的目的是建立一套具有?C++?方便接口,同時(shí)又比?Fortran?速度更快的數(shù)值計(jì)算環(huán)境。通常,用?C++?所寫出的數(shù)值程序,比?Fortran?慢?20%?左右,因此?Blitz++?正是要改掉這個(gè)差距。方法是利用?C++?的?template?技術(shù),程序執(zhí)行甚至可以比?Fortran?更快。
CGAL
·?
CGAL?Home
CGAL?(Computational?Geometry?Algorithms?Library)?是高效幾何計(jì)算方面的?C++?類庫,CGAL?也有?Python?和?Matlab?的?API?接口。CGAL?應(yīng)用的領(lǐng)域有:圖形學(xué)、可視化、輔助設(shè)計(jì)與建模、GIS?等。
POOMA
·?
FreePOOMA?Home
POOMA?(Parallel?Object-Oriented?Methods?and?Applications)?原先是由?Los?Alamos?National?Laboratory?(LANL)?開發(fā)的用于并行計(jì)算的?C++?類庫。
POOMA?提供近似于數(shù)學(xué)語法的高層語法,來簡化算法的編程,并且自動(dòng)處理多處理器之間的通信事務(wù)。POOMA?被用于物理模型的計(jì)算,例如:粒子物理計(jì)算。
FreePOOMA?是?POOMA?的繼續(xù)項(xiàng)目,原先的?POOMA?已經(jīng)很少維護(hù)了。
MTL
·?
MTL?Home
·?
MTL4
MTL?(Matrix?Template?Library)?提供?矩陣?和?線性代數(shù)?計(jì)算的功能,是一個(gè)基于模板泛型設(shè)計(jì),以高性能計(jì)算?(HPC:?High-performance?computing)?為目標(biāo)的類庫。
MTL?有?2?個(gè)版本:MTL4?和?MTL2,MTL4?是?2005?后重寫的庫。
OpenMP
·?
OpenMP.org:OpenMP?官方,OpenMP?規(guī)范標(biāo)準(zhǔn)。
·?
OpenMP?Library?Reference:VC?的?OpenMP?支持?和?使用參考。
OpenMP?不是一套復(fù)用目的的開發(fā)庫,而是一組用于共享內(nèi)存并行系統(tǒng)的多線程程序的一套指導(dǎo)規(guī)范,它由編譯和運(yùn)行環(huán)境支持,最新的?GCC、ICC、VC?都對?OpenMP?有所支持。OpenMP?規(guī)范支持的語言包括?C、C++?和?Fortran。開發(fā)時(shí),在源碼中使用編譯指示?(directive,?#pragma)?指導(dǎo)編譯器并行化,編譯器自動(dòng)將程序并行化,并在必要之處加入同步互斥語義。
Intel?Compilers?and?Libraries
·?
Intel?Compilers?and?Libraries:包括?C++?和?Fortran?兩種語言編譯工具,VTune、等性能工具,MKL?等提升數(shù)學(xué)和并行計(jì)算的開發(fā)庫。支持的平臺有:Windows、Linux、Mac?OS
·?
Intel?Compilers?and?Libraries?Non-Commercial?Software?Download:Intel?的開發(fā)工具包有?Linux?平臺下的免費(fèi)下載版。
·?
Intel?C++?Compiler?for?Windows?Knowledge?Base:使用?Intel?編譯和開發(fā)工具的知識庫,里面有很多關(guān)于數(shù)學(xué)和并行計(jì)算、性能優(yōu)化的專家級文章,也有工具使用的指導(dǎo)教程,還有示例代碼。
本來不想把?Intel?Compilers?and?Libraries?放到這一類的,因?yàn)檫@個(gè)軟件包含了除?開發(fā)庫?外的編譯和其它工具,但是由于使用此軟件包能夠在?Intel?平臺下開發(fā)和生成出色性能的程序,以及對并行計(jì)算的強(qiáng)力支持,還是把它列出來了。這個(gè)軟件包以及從?ICC?編譯器增大到包括?VTune、Amplifier、Inspector、MKL?(Math?Kernel?Library)?等各種性能工具和庫的開發(fā)套件,是開發(fā)?Intel?平臺高性能、并發(fā)程序的強(qiáng)力工具。
網(wǎng)絡(luò)功能?|?Network?Communication
很多通用庫和應(yīng)用框架庫,如?Boost.Asio,都有網(wǎng)絡(luò)通信功能、異步網(wǎng)絡(luò)?I/O?功能?(AIO)?或?Socket?封裝庫,這里只列出以?網(wǎng)絡(luò)通信功能?為主要目的的開發(fā)庫。
ACE
·?
ACE?Home:從這里開始了解?ACE,同時(shí)也是?ACE?之父?Schmidt?的主頁。
·?
ACE?Repository:Schmidt?是?Vanderbilt?大學(xué)的教授,ACE?的源碼可以從?Vanderbilt?大學(xué)的?SVN?倉庫中下載。
·?
ACE?Docs:ACE?的?Doxygen?參考文檔。
ACE?(Adaptive?Communication?Environment)?中文翻譯為?自適應(yīng)通訊環(huán)境,由?Douglas?Schmidt?發(fā)起,后來有其它人員參與。
ACE?是一套重量級的?C++?網(wǎng)絡(luò)功能庫,它的特點(diǎn)是使用很多面向?qū)ο蟮脑O(shè)計(jì)模式來實(shí)現(xiàn)網(wǎng)絡(luò)功能,并且有很好的跨平臺能力。ACE?的框架中實(shí)現(xiàn)了很多概念,諸如:事件多路分離和事件處理器分派、信號處理、服務(wù)初始化、進(jìn)程間通信、共享內(nèi)存管理、消息路由、分布式服務(wù)動(dòng)態(tài)配置、并發(fā)執(zhí)行和同步?等。
因?yàn)?ACE?的模式眾多,所以使用者在清晰理解其概念的情況下,才會發(fā)揮?ACE?的效能。關(guān)于?ACE?的評價(jià)和學(xué)習(xí)步驟、資料,可以參考《學(xué)之者生,用之者死:ACE?歷史與簡評》(陳碩)。
A?Stream?Socket?API?for?C++:http://www.pcs.cnu.edu/,Socket?封裝。
A?simple?IOCP?Server/Client?Class:http://www.codeproject.com/,Windows?Socket?+?IOCP?完成端口機(jī)制封裝。在?Windows?下稍加更改可以讓這個(gè)變成符合自己需要的小巧而高效的網(wǎng)絡(luò)處理類。配文講解的中文翻譯在?vckbase。
XML?功能?|?XML?Functions
XML?是現(xiàn)代通用的數(shù)據(jù)保存格式,因?yàn)樗耐ㄓ眯院透袷搅己枚x,被經(jīng)常用在?數(shù)據(jù)存儲、數(shù)據(jù)交換?和?接口說明?等功能中。先列舉一些?XML?解析器?(XML?Parser):
TinyXML:http://www.grinninglizard.com/tinyxml/,一個(gè)輕量級的?XML?Parser.
MSXML
·?
Developing?with?MSXML:MSDN?上的?MSXML?開發(fā)資源合集,包括?MSXML?開發(fā)包下載、開發(fā)教學(xué)、文檔參考、XML?工具等。
·?
MSXML?MSDN?Library?Reference
微軟的?XML?Parser,全稱?Microsoft?Core?XML?Services,采用?COM?的接口操作形式,提供?DOM?和?SAX2?API、XML?Schema?(XSD)、XPath、XSLT?功能。
xml4c:http://www.alphaworks.ibm.com/tech/xml4c,IBM?的重量級?XML?Parser,C++?實(shí)現(xiàn),支持?100?多種字符編碼。
Xerces:http://xml.apache.org/xerces-c,Apache?的?XML?Parser,支持少數(shù)的字符編碼,如?ASCII、UTF-8、UTF-16?等,功能包括驗(yàn)證?DTD、SAX?和?DOM?API?等。
libxml++:http://libxmlplusplus.sourceforge.net/,對的?libxml?(The?XML?C?parser?and?toolkit?of?Gnome)?解析器的?C++?封裝。
XMLBooster:http://www.xmlbooster.com/,使用?DOM?和?SAX?兩大主流?XML?解析辦法之外的解析器。
下面列舉一些?XML?的功能庫:
Xalan:http://xml.apache.org/xalan-c/,Xalan?可以將?XML?文檔轉(zhuǎn)換為?HTML、純文本或者其它?XML?類型文檔。
gSOAP:http://gsoap2.sourceforge.net/,SOAP/Web?Services?的一個(gè)?C++?開源實(shí)現(xiàn)。
SOAP/Web?Services?in?ATL?Server
·?
ATL?Server?Reference?in?MSDN?(VS:微軟對?ATL?Server?庫的支持降低了,在?MSDN?Library?中,最后一個(gè)有?ATL?Server?參考的版本是?VS8。因?yàn)楝F(xiàn)在微軟主推的?.Net?框架中已包含?HTTP?和?SOAP?等?Web?功能(WCF?等)。
·?
ATL?Server?Library?and?Tools?in?CodePlex:ATL?Server?現(xiàn)在在?CodePlex?上托管和維護(hù),可以在這里得到?ATL?Server?最新的消息。
這是微軟的?SOAP/Web?Services?功能。原先微軟有一個(gè)?SOAP?Toolkit?的庫,實(shí)現(xiàn)?SOAP/Web?Services?功能,但后來被廢棄了,并移入了?.Net?框架中。所以要使用本地代碼?C/C++?實(shí)現(xiàn)的?SOAP,就要使用?ATL?Server?庫中的?SOAP/Web?Services?功能。ATL?Server?庫除了?SOAP?之外還提供其它?Web?功能,例如?HTTP?實(shí)現(xiàn)。
eXist:http://exist.sourceforge.net/,持續(xù)化?XML?存儲,XML?數(shù)據(jù)庫。
Simple?XML?Persistence?Library?(SXP):http://sxp.sourceforge.net/,將對象序列化為?XML?的輕量級的?C++?庫,用于持久存儲。
持久存儲?|?Persistence?&?Storage
通常?持久存儲?表示的概念包括:(1)?將類型(POD?類型、類對象、容器)序列化為二進(jìn)制數(shù)據(jù)。(2)?提供基于文件/流的操作。(3)?提供基于數(shù)據(jù)庫的操作。對于?(3)?各數(shù)據(jù)庫管理軟件?(DBMS)?大多都提供自己的?C/C++?API,在?Windows?下更有?ODBC、OLE/DB?這種中間適配層提供統(tǒng)一的操作接口。下面只列出一些輕量級、開源的持久化功能。
s11n:http://s11n.net/,一個(gè)基于?STL?的?C++?庫,用于序列化?POD?類型、STL?容器以及用戶定義類型。
MySQL?Connector/C++:MySQL?5.1?Connector/C++?參考,MySQL?數(shù)據(jù)庫客戶端操作的?C++?API。默認(rèn)發(fā)布的?MySQL?安裝包中包含其?C?語言的?API?(MySQL?Connector/C)。
SQLite:http://www.sqlite.org/,輕量級的?SQL?DBMS,沒有?SQL?的服務(wù)器端,單純基于文件存儲。提供?API?支持,使用戶執(zhí)行?SQL?語句來查詢/操縱數(shù)據(jù),Firefox?3?就使用?SQLite?保存其配置數(shù)據(jù)。
加解密?|?Cryptographic
Crypto++:Crypto++?Sourceforge?Project,?http://www.cryptopp.com/。C++?封裝的加解密算法庫。Crypto++?是各種算法的合集,包括對稱密碼、非對稱密碼、摘要算法。
OpenSSL:http://www.openssl.org/。C?API?的加解密算法庫,以及?SSL?協(xié)議實(shí)現(xiàn)。OpenSSL?不只是加解密算法庫,還包含網(wǎng)絡(luò)功能(包括未使用和使用加密通道?SSL)和實(shí)用工具。
日志?|?Logging
Log?for?C++?(Log4cpp)
·?
Log4cpp?主頁
·?
Logging?and?Tracing?in?C++?Simplified:SUN?developers?上的?Log4cpp?教學(xué)示例。
Log4cpp?主要用于?C++?程序中寫日志,有著較強(qiáng)的跨平臺移植能力。除了日志功能外,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://sourceforge.net/projects/boost-log/,用于日志記錄的?Boost?庫,目前沒有放入?Boost?發(fā)布包中。
log4cxx:http://logging.apache.org/log4cxx/,Apache?出的日志功能庫。
glog:http://code.google.com/p/google-glog/
Log4cplus:http://log4cplus.sourceforge.net/
Logging?In?C++:http://www.drdobbs.com/,這是?DrDobbs?上的一篇文章,教你怎么寫出一個(gè)?C++?Logging?功能類。
函數(shù)式編程?|?Functional?Programming
Boost.Lambda:Boost.Lambda?是?Boost?提供的函數(shù)式編程特性。
The?Functional?C++?Library?(FC++):http://www.cc.gatech.edu/,用模板庫來實(shí)現(xiàn)?C++?的函數(shù)式編程。
FACT!:http://www.fz-juelich.de/,另一個(gè)實(shí)現(xiàn)?C++?函數(shù)式編程的模板庫。
雜項(xiàng)?|?MISC
CppUnit:CppUnit?Sourceforge?Project,一個(gè)?C++?的單元測試框架,由?JUnit?移植而來,使用派生測試類的方式產(chǎn)生測試用例。
總結(jié)
以上是生活随笔為你收集整理的C/C++ 类库开发库参考【资料整理】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenSSL 再爆严重安全漏洞 ——
- 下一篇: MFC C++ 获取外网IP地址