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