STL:C++標準模板庫php
boost:C++準標準庫,它是強大地,江湖稱之「千錘百煉」。-------若掌握,必橫行世界。html
deelx (輕量級的正則表達式解析類庫,國產),boost裏有強大的正則表達式解析庫,但若是你只想要一個表達式解析,不想要拖上龐大的boost庫時……支持一下國貨。java
iconv /iconvpp : C形式的編碼轉換函數庫node
C++的XML相關庫很多,可是大部分其實都是C庫,使用起來天然不那麼輕便。其中基於DOM的有TinyXml,基於SAX的固然是Xerces。前者小巧快捷,便於使用,適合作數據交換。後者則是全功能的XML解析器。python
xerces-c :最強大的XML解析庫了,不是僅僅在開源庫裏,你儘管把商業的算在內。固然,它的變體,被IBM拿去賣錢的那個版本,多了數百兆的東東來支持各國編碼轉換,是更強大,但我以爲有小小的,開源的iconv在前不就夠了?mysql
對三個輕型xml解析開源庫:SlimXml、TinyXml、RapidXml,對好比下:react
解析這個3.3萬行,1.5M大小的xml,三個庫分別花了linux
結論是,RapidXml果真很強悍,竟然比SlimXml快5倍多。c++
比較欣慰的是,在沒有很關注效率的狀況下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是簡單小巧路線,源代碼只有 32k,而TinyXml和RapidXml的源碼分別是147k和141k,有這樣的效率能夠滿意了。由於這個庫主要仍是針對幾十上百行的小文件,解析特別大的xml不在我考慮的範圍以內。git
還有irrlicht(鬼火引擎)的irrXMl解析器。
xsd (XML 與 C++數據結構的綁定工具)。(商業使用要錢)
我比較喜歡OTL(用於鏈接數據庫)。
SDL (Simple DirectMedia Layer/多媒體直接訪問層,用於遊戲編程)。
相應的c開源庫有ffmpeg、mpeg四、aac、avc、libmad、mpeg一、flac、ac三、ac三、matroska著名的多媒體播放器 TCPMP 天下聞名的跨平臺、嵌入式手持設備視頻播放器,
一、gSOAP SOAP協議的C++支持庫及代碼生成工具。
二、ACE 網絡編程研究首選。
ACE適合於研究,大型網絡編程上效率不足,大型網遊裏面幾乎沒有用到ACE的,不少用了ACE的項目也被證實了效率不高。
除了ACE以外,還有不少系統和網絡編程方面的程序庫。好比在線程庫方面,還有ZThread、boost::thread,若是放大到C/C++領域, 還有APR,還有CII。在文件和目錄操做方面,boost也有相應的組件,而在網絡編程方面有socket++,還有boost::asio,將來的 C++0X中幾乎確定有一個網絡編程和一個線程庫。然而目前看來,ACE仍然是進行系統和高性能網絡編程的首選,其地位在一段時間內不會被撼動。它不可是 一個實用的程序庫、框架集,仍是一個典範的設計模式應用範例,很是值得學習。
三、有博友回覆到POCO。我整理以下:
開源C++庫,稱爲POCO(POrtable COmponents – 可移植元件),很是方便好用。
特性:
* 線程,程序同步及多線程編程高級抽象
* 流及文件系統訪問
* 共享庫將類加載
* 功能強大的日誌和錯誤報告
* 安全及加密
* 網絡編程 (TCP/IP 套接字, HTTP客戶端和HTTP服務器, FTP, SMTP, POP3, 等)
* XML解析 (SAX2 和 DOM) 及生成
* 配置文件及選項處理
* SQL數據庫訪問(ODBC, MySQL, SQLite)
能夠運行的平臺包括:
* Windows
* Mac OS X
* iPhone OS
* (embedded) Linux
* HP-UX
* Tru64
* Solaris
* QNX
BCG Windows平臺下界面設計的第三方庫,可讓你的界面更美好,更具時代感。
wxWidgets :使用wxWidgets ,開發者能夠基於同一套代碼,爲Win32, Mac OS X, GTK+, X11, Motif, WinCE等平臺開發應用程序。wxWidgets庫能夠被C++, Python, Perl, and C#/.NET等開發語言使用。跟其它有些一樣支持跨平臺GUI開發工具不一樣,基於wxWidgets的應用,擁有真實本地化的視覺及使用效果——由於,wxWidgets使用(各)平臺原生的控件,而不是簡單經過貼圖去模擬。wxWidgets是使用普遍的,自由的,開源的,成熟的。
QT------界面(GUI)開發,支持C++/Java/Python/...多種語言。跨平臺。最主要的好處是,API很是優美!Qt自己也不只僅只是作GUI編程,實際它基本上能夠作OS-API能夠作的任何事情。象網絡/數據庫/OpenGL/...都提供完美的支持。傳統上Qt被認爲是可移植的GUI庫,但實際上Qt如今已是一個比較完整的可移植應用程序框架了,其中包含了大量的工具,好比正則表達式、Web和 Socket類、2D和3D圖形、XML解析、SQL類等,甚至還包括了一個完整的容器類庫,不過其王牌仍是GUI。在目前的跨平臺GUI框架中,Qt成熟度最高,已經被一些大公司應用在關鍵產品中。因爲Trolltech對Qt採用的dual license模式,該產品既能夠從開源社區得到支持,又可以賺取足夠的商業利潤,所以其前景也使人比較有信心。Qt的主要技術特點是其元對象模型。Qt實際上使用的並非標準的C++,而是標準C++的一個擴展。它經過元對象模型擴展,實現了著名的signal/slot機制,而這一機制也成爲Qt的最大特點和優點。
與Qt相似的可移植GUI框架還有wxWidget、FOX等
OpenCV,因特爾自主的開源庫。支持C/C++/Python接口。這個感興趣的朋友能夠玩一下。若是結合OpenCV,你能夠作一些外行人以爲很酷的程序。好比說用它的人臉識別函數,來對你的攝像頭進行處理,判斷人的動做等
GDAL,處理大圖像。要是GIS專業的人確定會語言到很是大的tif影像,動則幾個GB的航空影像。GDAL對大圖像的讀寫支持是很是棒的(像多波段的圖像均可以搞定)。 支持C++/Java/Python...
國外開源的GIS軟件QGIS就是用了gdal
C的圖形圖像庫較多,libjpeg、libpng、zlib、tiff、JBIG、最著名的開源形圖像處理軟件Cximage
boost::smart_ptr,Hans-Boehm GC
C/C++的內存管理是一個永恆的話題。通常來講,C++的開發者傾向於本身管理內存。然而,出乎不少C++開發者意料的是,近期C++的一些領袖人物已經公開宣稱,若是不配備自動內存管理機制,用C++編寫安全可靠的大型程序是很是困難的。而Bjarne Stroustrup也曾對中國開發者建議,若是沒有特別的理由,應該在大型項目中使用自動內存管理工具。所以,今天的C++開發者應當積極地學習和應用自動內存管理設施。
說到自動內存管理,比較輕量級的作法是boost::smart_ptr,而激進的作法是引入完整的GC機制。目前開源而又比較可靠的GC中,Hans- Boehm GC無疑是最受信賴的。做爲一個保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特別是,使用這個GC,你仍然能夠delete、free來本身管理內存,對於咱們編程習慣的衝擊比較小。
OpenSSL
安全是今天進行C/C++編程沒法迴避和必須重視的問題。然而編寫安全的應用程序,特別是跟網絡相關的C/C++應用程序,是一件十分困難的事情。能夠 說,整個業界目前在這個進程上仍然處於「初級階段」。特別是涉及到大量的安全、密碼學相關的算法、規範,若是讓開發者本身摸索,其工做量和難度達到了不現實的程度。所以必須藉助可靠的相關程序庫纔有可能提升程序的安全性。在這方面,OpenSSL是目前最好的選擇,其內容之全面可靠,已經成爲業界標杆。然 而,因爲安全編程固有的複雜性,即便使用penSSL,開發工做仍然是很是繁瑣的。所以咱們也但願可以儘快看到更簡單、更易用的C/C++安全程序庫。
MTL
自1995年以來,C++在科學計算領域當中取得了巨大的突破。這主要歸功於template技術的高級應用,使得C++在科學計算的性能方面取得了巨大的進步,一大批優秀的C++科學計算庫涌現出來。好比Blitz++、POOMA、MTL、Boost::uBLAS。而這其中,MTL就功能豐富程度、 性能、開發支持和成熟程度來說,是比較突出的一個,所以能夠優先考慮。值得一提的是,2002年,MTL與後來被Intel收購的KAI C++配合,曾經在性能評測中擊敗了FORTRAN。
一、分佈式對象中間件:ICE
ICE是分佈式對象中間件領域裏的後起之秀,能夠大體地將其視爲「改進版」的CORBA。目前應用在一些大型項目當中,其中包括波音公司主持的下一代陸軍做戰系統。
ICE的一個特別價值是其代碼的範例意義。因爲ICE的出現較晚,開發者比較系統地應用了新的C++編程風格,因此成爲了研讀C++代碼的良好目標。
二、消息中間件:ZeroMQ,總結的幾種特性以下:
1) 消息系統中,它差很少是最簡潔的,只是個簡潔的API,有n多種語言的綁定,沒有專門的服務器;
2) 性能很是優越,遠遠高於RabbitMQ、ActiveMQ、MSMQ等;
3) 適合作分佈式和併發應用。
boost::regex
正則表達式是編程工做中最強有力的工具之一。C++的正則表達式支持一直以來是一個軟肋。大約在2001年左右,boost中出現了regex庫,初步解決了這個問題。可是最初的regex不管在效率上仍是可靠性方面都有一些問題,後來通過一次大規模的翻修以後,達到了比較完善的程度。
其餘能夠選擇的替代品還有C語言的pcre庫,Qt中的QRegExp類等。
Lua
隨着軟件系統愈來愈複雜,對軟件的可配置型提出了愈來愈高的要求。傳統上只要經過命令行參數來配置的系統,如今可能須要愈來愈多的方式和機制。目前愈來愈受歡迎、而且獲得愈來愈多證明的作法,是將Lua嵌入到C/C++程序中,而用Lua程序做爲配置腳本。這種作法的優點是,Lua語言強大靈活,能夠適應 複雜的配置要求。同時,Lua便於嵌入C/C++程序,並且編譯執行速度很是快,能夠說是目前解決C/C++程序配置管理問題的一個出色方案。
1. Irrlicht http://irrlicht.sourceforge.net/
始於2003,次年即被評爲最佳開源遊戲引擎。官方支持C++和.Net,拓展語言綁定包含java,perl,ruby,python.跨平臺支持,使用D3D,OpenGL以及自帶API.
優勢:容易上手;跨平臺;自帶XML解析器;大的社區;
缺點:最近開發慢下來了
2. Panda3D http://www.panda3d.org/
由迪斯尼開發,卡耐基-梅隆娛娛樂科技中心支持。Python是官方推薦語言。也支持C++。
優勢:有用的社區;大量功能;按期開發;
缺點:缺少工具支持;極差的文檔;
3. OGRE http://www.ogre3d.org/
圖像引擎中最好的一個。2000年立的項。推薦使用C++語言。須要很是熟悉編程才行。初學者不宜。
優勢:大量功能;優異的文檔;大規模的社區;活躍的開發
缺點:不適合初哥;只有圖像引擎
4. Crystal Space http://www.crystalspace3d.org/main/Main_Page
1997年發行,用C++編寫的開源遊戲引擎。推薦使用C++
優勢:不錯的社區支持;大量功能;
缺點:難學;
五、Delta3d http://www.delta3d.org/index.php
Delta3D是一款由美國海軍研究學院(Naval Postgraduate School)開發的全功能遊戲與仿真引擎,獲得美國軍方巨大的支持與豐厚的投資。該引擎應用領域極爲普遍,如開發在培訓、教育、娛樂行業和科學計算可視化領域等方面建模與仿真的軟件。它的標準化設計把一些知名開源軟件和引擎如 Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library (CAL3D), 還有 OpenAL融爲一體。Delta3D經過對這些底層模塊進行隱藏封裝,整合在一塊兒從而造成了一個使用更加方便的高級API 函數庫,使得開發者在必要的時候可以使用底層函數進行二次開發。Delta3D在軟件系列中,處於中間層(Middle layer)的位置上。
優勢:適合各類3D遊戲,仿真,很全面。一直在作更新。
缺點:參考資料比較少。中文文檔也比較少。官方參考資料比較少。可是讀源代碼能夠加快理解,應用。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-----------------------------------------------------------------------------------------------------------------------------------------
(1)ACE
龐大、複雜,適合大型項目。開源、免費,不依賴第三方庫,支持跨平臺。
http://www.cs.wustl.edu/~schmidt/ACE.html
http://download.dre.vanderbilt.edu/
(2)Asio
Asio基於Boost開發的異步IO庫,封裝了Socket,簡化基於socket程序的開發。
開源、免費,支持跨平臺。
(3)POCO
POCO C++ Libraries 提供一套 C++ 的類庫用以開發基於網絡的可移植的應用程序,功能涉及線程、線程同步、文件系統訪問、流操做、共享庫和類加載、套接字以及網絡協議包括:HTTP、 FTP、SMTP 等;其自己還包含一個 HTTP 服務器,提供 XML 的解析和 SQL 數據庫的訪問接口。POCO庫的模塊化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,因爲C++既適合底層(設備I/O、中斷處理等)和高層面向對象開發,愈來愈流行。
(4)libevent
Libevent是一個輕量級的開源高性能網絡庫,從它的官網標題:libevent-an event notification library就能知道它的機制是採用事件觸發,封裝瞭如下三種事件的響應:IO事件,定時器事件,信號事件。select模型來實現跨平臺的操做,Windows環境下支持IOCP。Google的開源WEB瀏覽器Chromium在Mac和Linux版本中,也使用了Libevent,足見該庫的質量。
(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協議, 高度可定製的錯誤處理。
(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是一個不錯的選擇。
-----------------------------------------------------------------------------------------------------------------------------------
一些庫在各個項目常常重用.如jpeg,freetype,iconv 等.每次大型項目均會反覆重用.所以按照原來項目規範,通常都放在項目libs目錄下,但後來發現,每一個項目都作重複操做.也徹底沒有必要.由於如今是將其歸綱到一個comm_lib公用信息.
如下是經常使用庫的ARM-Linux移植,我是放在/home/hxy/common_lib 目錄下.按到移植規範,輸出在 output/arm-linux下,庫自己在 libs 下面.
如下是常見庫的移植.在這裏留做教學和備份用.
-------------------------------------------------------------------------------------------------------------------------------------------------------
[1]由 fffaraz 發起和維護。
內容包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日誌、代碼分析等。
C++標準庫,包括了STL容器,算法和函數等。
C++通用框架和庫
音頻,聲音,音樂,數字化音樂庫
生物信息,基因組學和生物技術
壓縮和歸檔庫
併發執行和多線程
數據庫,SQL服務器,ODBC驅動程序和工具
調試庫, 內存和資源泄露檢測,單元測試
動力學仿真引擎
XML就是個垃圾,xml的解析很煩人,對於計算機它也是個災難。這種糟糕的東西徹底沒有存在的理由了。-Linus Torvalds
一些有用的庫或者工具,可是不適合上面的分類,或者尚未分類。
用於建立開發環境的軟件
C/C++編譯器列表
在線C/C++編譯器列表
C/C++調試器列表
C/C++集成開發環境列表
提升質量,減小瑕疵的代碼分析工具列表
C/C++程序員必須熟練應用的開源項目 http://blog.csdn.net/langeldep/article/details/6293655