偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

給程序員介紹一些C++開(kāi)源庫(kù)

開(kāi)發(fā) 后端
今天我們將介紹一些C++開(kāi)源庫(kù)。請(qǐng)諒解本文作者可能的照顧不周,本文也希望能起到牽針引線的作用,讓大家都分享一些C++開(kāi)源庫(kù)。

  C++開(kāi)源庫(kù),歡迎補(bǔ)充。

  C++在“商業(yè)應(yīng)用”方面,曾經(jīng)是天下第一的開(kāi)發(fā)語(yǔ)言,但這一桂冠已經(jīng)被java搶走多年。因?yàn)楫?dāng)今商業(yè)應(yīng)用程序類型,已經(jīng)從桌面應(yīng)用迅速轉(zhuǎn)移成Web應(yīng) 用。當(dāng)Java橫行天下之后,MS又突然發(fā)力,搞出C#語(yǔ)言,有大片的曾經(jīng)的C++程序員,以為C++要就此沉淪,未料,這三年來(lái),C++的生命力突然被 嚴(yán)重地增強(qiáng)了。主力原因就是開(kāi)源的軟件、基礎(chǔ)軟件(比如并發(fā)原生支持,比如Android必定要推出原生的SDK)、各種跨平臺(tái)應(yīng)用的出現(xiàn)。

  開(kāi)源C++庫(kù)必須具有以下特點(diǎn):必須是成熟的產(chǎn)品、跨平臺(tái)的產(chǎn)品、相對(duì)通用的庫(kù)。

  一、通用標(biāo)準(zhǔn)類

  STL:C++標(biāo)準(zhǔn)模板庫(kù),呵呵,它也是開(kāi)源的嘛。

  boost:C++準(zhǔn)標(biāo)準(zhǔn)庫(kù),它是強(qiáng)大地,江湖稱之“千錘百煉”。

  -------若掌握,必橫行世界。

  deelx (輕量級(jí)的正則表達(dá)式解析類庫(kù),國(guó)產(chǎn)),boost里有強(qiáng)大的正則表達(dá)式解析庫(kù),但如果你只想要一個(gè)表達(dá)式解析,不想要拖上龐大的boost庫(kù)時(shí)……支持一下國(guó)貨。

  iconv /iconvpp : (C形式的編碼轉(zhuǎn)換函數(shù)庫(kù),

  二、XML解析庫(kù)

  C++的XML相關(guān)庫(kù)不少,但是大部分其實(shí)都是C庫(kù),使用起來(lái)自然不那么輕便。其中基于DOM的有TinyXml,基于SAX的當(dāng)然是Xerces。前者小巧快捷,便于使用,適合做數(shù)據(jù)交換。后者則是全功能的XML解析器。

  哥更傾向于TingyXml.小巧啊!

  xerces-c :最強(qiáng)大的XML解析庫(kù)了,不是僅僅在開(kāi)源庫(kù)里,你盡管把商業(yè)的算在內(nèi)。當(dāng)然,它的變體,被IBM拿去賣(mài)錢(qián)的那個(gè)版本,多了數(shù)百兆的東東來(lái)支持各國(guó)編碼轉(zhuǎn)換,是更強(qiáng)大,但我覺(jué)得有小小的,開(kāi)源的iconv在前不就夠了?

  根據(jù)博友的一篇博文http://www.cnblogs.com/wuqi924/archive/2010/11/18/1880950.html

  對(duì)三個(gè)輕型xml解析開(kāi)源庫(kù):SlimXml、TinyXml、RapidXml,對(duì)比如下:

  解析這個(gè)3.3萬(wàn)行,1.5M大小的xml,三個(gè)庫(kù)分別花了

  SlimXml: 22ms

  TinyXml: 54ms

  RapidXml: 4ms!

  結(jié)論是,RapidXml果然很強(qiáng)悍,居然比SlimXml快5倍多。

  比較欣慰的是,在沒(méi)有很關(guān)注效率的情況下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是簡(jiǎn)單小巧路線,源代碼只有 32k,而TinyXml和RapidXml的源碼分別是147k和141k,有這樣的效率可以滿意了。因?yàn)檫@個(gè)庫(kù)主要還是針對(duì)幾十上百行的小文件,解析特別大的xml不在我考慮的范圍之內(nèi)。

  還有irrlicht(鬼火引擎)的irrXMl解析器。

  xsd (XML 與 C++數(shù)據(jù)結(jié)構(gòu)的綁定工具)。(商業(yè)使用要錢(qián))

  三、數(shù)據(jù)庫(kù)

  我比較喜歡OTL(用于連接數(shù)據(jù)庫(kù))。其他的沒(méi)用過(guò)

  四、多媒體類

  ---摘錄別處,自己,沒(méi)用過(guò)

  SDL (Simple DirectMedia Layer/多媒體直接訪問(wèn)層,用于游戲編程)。

  相應(yīng)的c開(kāi)源庫(kù)有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒體播放器 TCPMP 天下聞名的跨平臺(tái)、嵌入式手持設(shè)備視頻播放器,

  五、網(wǎng)絡(luò)開(kāi)發(fā)類

  1、gSOAP SOAP協(xié)議的C++支持庫(kù)及代碼生成工具。

  2、ACE 網(wǎng)絡(luò)編程研究首選。

  ACE適合于研究,大型網(wǎng)絡(luò)編程上效率不足,大型網(wǎng)游里面幾乎沒(méi)有用到ACE的,很多用了ACE的項(xiàng)目也被證明了效率不高。

  除了ACE之外,還有很多系統(tǒng)和網(wǎng)絡(luò)編程方面的程序庫(kù)。比如在線程庫(kù)方面,還有ZThread、boost::thread,如果放大到C/C++領(lǐng)域, 還有APR,還有CII。在文件和目錄操作方面,boost也有相應(yīng)的組件,而在網(wǎng)絡(luò)編程方面有socket++,還有boost::asio,未來(lái)的 C++0X中幾乎肯定有一個(gè)網(wǎng)絡(luò)編程和一個(gè)線程庫(kù)。然而目前看來(lái),ACE仍然是進(jìn)行系統(tǒng)和高性能網(wǎng)絡(luò)編程的首選,其地位在一段時(shí)間內(nèi)不會(huì)被撼動(dòng)。它不但是 一個(gè)實(shí)用的程序庫(kù)、框架集,還是一個(gè)典范的設(shè)計(jì)模式應(yīng)用范例,非常值得學(xué)習(xí)。

  3、有博友回復(fù)到POCO。我整理如下:

  開(kāi)源C++庫(kù),稱為POCO(POrtable COmponents – 可移植元件),非常方便好用。

  特性:

  * 線程,程序同步及多線程編程高級(jí)抽象

  * 流及文件系統(tǒng)訪問(wèn)

  * 共享庫(kù)將類加載

  * 功能強(qiáng)大的日志和錯(cuò)誤報(bào)告

  * 安全及加密

  * 網(wǎng)絡(luò)編程 (TCP/IP 套接字, HTTP客戶端和HTTP服務(wù)器, FTP, SMTP, POP3, 等)

  * XML解析 (SAX2 和 DOM) 及生成

  * 配置文件及選項(xiàng)處理

  * SQL數(shù)據(jù)庫(kù)訪問(wèn)(ODBC, MySQL, SQLite)

  可以運(yùn)行的平臺(tái)包括:

  * Windows

  * Mac OS X

  * iPhone OS

  * (embedded) Linux

  * HP-UX

  * Tru64

  * Solaris

  * QNX

  六、GUI庫(kù)

  BCG Windows平臺(tái)下界面設(shè)計(jì)的第三方庫(kù),可以讓你的界面更美好,更具時(shí) 代感。

  wxWidgets :使用wxWidgets ,開(kāi)發(fā)者可以基于同一套代碼,為Win32, Mac OS X, GTK+, X11, Motif, WinCE等平臺(tái)開(kāi)發(fā)應(yīng)用程序。wxWidgets庫(kù)可以被C++, Python, Perl, and C#/.NET等開(kāi)發(fā)語(yǔ)言使用。跟其它有些同樣支持跨平臺(tái)GUI開(kāi)發(fā)工具不同,基于wxWidgets的應(yīng)用,擁有真實(shí)本地化的視覺(jué)及使用效果——因 為,wxWidgets使用(各)平臺(tái)原生的控件,而不是簡(jiǎn)單通過(guò)貼圖去模擬。wxWidgets是使用廣泛的,自由的,開(kāi)源的,成熟的。

  QT-------------界面(GUI)開(kāi)發(fā),支持C++/Java/Python/...多種語(yǔ)言??缙脚_(tái)。最主要的好處是,API非常優(yōu) 美!Qt本身也不僅僅只是做GUI編程,實(shí)際它基本上可以做OS-API可以做的任何事情。象網(wǎng)絡(luò)/數(shù)據(jù)庫(kù)/OpenGL/...都提供完美的支持。

  傳統(tǒng)上Qt被認(rèn)為是可移植的GUI庫(kù),但實(shí)際上Qt現(xiàn)在已經(jīng)是一個(gè)比較完整的可移植應(yīng)用程序框架了,其中包含了大量的工具,比如正則表達(dá)式、Web和 Socket類、2D和3D圖形、XML解析、SQL類等,甚至還包括了一個(gè)完整的容器類庫(kù),不過(guò)其王牌還是GUI。在目前的跨平臺(tái)GUI框架中,Qt成熟度最高,已經(jīng)被一些大公司應(yīng)用在關(guān)鍵產(chǎn)品中。由于Trolltech對(duì)Qt采用的dual license模式,該產(chǎn)品既可以從開(kāi)源社區(qū)獲得支持,又能夠賺取足夠的商業(yè)利潤(rùn),因此其前景也令人比較有信心。

  Qt的主要技術(shù)特色是其元對(duì)象模型。Qt實(shí)際上使用的并不是標(biāo)準(zhǔn)的C++,而是標(biāo)準(zhǔn)C++的一個(gè)擴(kuò)展。它通過(guò)元對(duì)象模型擴(kuò)展,實(shí)現(xiàn)了著名的signal/slot機(jī)制,而這一機(jī)制也成為Qt的最大特色和優(yōu)勢(shì)。

  與Qt類似的可移植GUI框架還有wxWidget、FOX等

  六. 計(jì)算機(jī)視覺(jué)

  OpenCV,因特爾自主的開(kāi)源庫(kù)。支持C/C++/Python接口。這個(gè)感興趣的朋友可以玩一下。如果結(jié)合OpenCV,你可以做一些外行人覺(jué)得很酷的程序。比如說(shuō)用它的人臉識(shí)別函數(shù),來(lái)對(duì)你的攝像頭進(jìn)行處理,判斷人的動(dòng)作等

  七. 圖形圖像處理

  GDAL,處理大圖像?!∫荊IS專業(yè)的人肯定會(huì)語(yǔ)言到非常大的tif影像,動(dòng)則幾個(gè)GB的航空影像。GDAL對(duì)大圖像的讀寫(xiě)支持是非常棒的(像多波段的圖像都可以搞定)?! ≈С諧++/Java/Python...

  國(guó)外開(kāi)源的GIS軟件QGIS就是用了gdal

  c的圖形圖像庫(kù)較多,libjpeg、libpng、zlib、tiff、JBIG、最著名的開(kāi)源形圖像處理軟件Cximage

  八、內(nèi)存管理:boost::smart_ptr,Hans-Boehm GC

  C/C++的內(nèi)存管理是一個(gè)永恒的話題。一般來(lái)說(shuō),C++的開(kāi)發(fā)者傾向于自己管理內(nèi)存。然而,出乎很多C++開(kāi)發(fā)者意料的是,近期C++的一些領(lǐng)袖人物已經(jīng)公開(kāi)宣稱,如果不配備自動(dòng)內(nèi)存管理機(jī)制,用C++編寫(xiě)安全可靠的大型程序是非常困難的。而B(niǎo)jarne Stroustrup也曾對(duì)中國(guó)開(kāi)發(fā)者建議,如果沒(méi)有特別的理由,應(yīng)該在大型項(xiàng)目中使用自動(dòng)內(nèi)存管理工具。因此,今天的C++開(kāi)發(fā)者應(yīng)當(dāng)積極地學(xué)習(xí)和應(yīng)用自動(dòng)內(nèi)存管理設(shè)施。

  說(shuō)到自動(dòng)內(nèi)存管理,比較輕量級(jí)的做法是boost::smart_ptr,而激進(jìn)的做法是引入完整的GC機(jī)制。目前開(kāi)源而又比較可靠的GC中,Hans- Boehm GC無(wú)疑是最受信賴的。作為一個(gè)保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特別是,使用這個(gè)GC,你仍然可以delete、free來(lái)自己管理內(nèi)存,對(duì)于我們編程習(xí)慣的沖擊比較小。

  、密碼及安全:OpenSSL

   安全是今天進(jìn)行C/C++編程無(wú)法回避和必須重視的問(wèn)題。然而編寫(xiě)安全的應(yīng)用程序,特別是跟網(wǎng)絡(luò)相關(guān)的C/C++應(yīng)用程序,是一件十分困難的事情??梢?說(shuō),整個(gè)業(yè)界目前在這個(gè)進(jìn)程上仍然處于“初級(jí)階段”。特別是涉及到大量的安全、密碼學(xué)相關(guān)的算法、規(guī)范,如果讓開(kāi)發(fā)者自己摸索,其工作量和難度達(dá)到了不現(xiàn) 實(shí)的程度。因此必須借助可靠的相關(guān)程序庫(kù)才有可能提高程序的安全性。在這方面,OpenSSL是目前最好的選擇,其內(nèi)容之全面可靠,已經(jīng)成為業(yè)界標(biāo)桿。然 而,由于安全編程固有的復(fù)雜性,即使使用penSSL,開(kāi)發(fā)工作仍然是非常繁瑣的。因此我們也希望能夠盡快看到更簡(jiǎn)單、更易用的C/C++安全程序庫(kù)。

  、矩陣計(jì)算:MTL

  自1995年以來(lái),C++在科學(xué)計(jì)算領(lǐng)域當(dāng)中取得了巨大的突破。這主要?dú)w功于template技術(shù)的高級(jí)應(yīng)用,使得C++在科學(xué)計(jì)算的性能方面取得了巨大 的進(jìn)步,一大批優(yōu)秀的C++科學(xué)計(jì)算庫(kù)涌現(xiàn)出來(lái)。比如Blitz++、POOMA、MTL、Boost::uBLAS。而這其中,MTL就功能豐富程度、 性能、開(kāi)發(fā)支持和成熟程度來(lái)講,是比較突出的一個(gè),因此可以優(yōu)先考慮。值得一提的是,2002年,MTL與后來(lái)被Intel收購(gòu)的KAI C++配合,曾經(jīng)在性能評(píng)測(cè)中擊敗了FORTRAN。

  十一、中間件

  1、分布式對(duì)象中間件:ICE

   ICE是分布式對(duì)象中間件領(lǐng)域里的后起之秀,可以大致地將其視為“改進(jìn)版”的CORBA。目前應(yīng)用在一些大型項(xiàng)目當(dāng)中,其中包括波音公司主持的下一代陸軍作戰(zhàn)系統(tǒng)。

  ICE的一個(gè)特別價(jià)值是其代碼的范例意義。由于ICE的出現(xiàn)較晚,開(kāi)發(fā)者比較系統(tǒng)地應(yīng)用了新的C++編程風(fēng)格,所以成為了研讀C++代碼的良好目標(biāo)。

  2、消息中間件:ZeroMQ,總結(jié)的幾種特性如下:

  1) 消息系統(tǒng)中,它差不多是最簡(jiǎn)潔的,只是個(gè)簡(jiǎn)潔的API,有n多種語(yǔ)言的綁定,沒(méi)有專門(mén)的服務(wù)器;

  2) 性能非常優(yōu)越,遠(yuǎn)遠(yuǎn)高于RabbitMQ、ActiveMQ、MSMQ等;

  3) 適合做分布式和并發(fā)應(yīng)用。

  十二、正則表達(dá)式:boost::regex

  正則表達(dá)式是編程工作中最強(qiáng)有力的工具之一。C++的正則表達(dá)式支持一直以來(lái)是一個(gè)軟肋。大約在2001年左右,boost中出現(xiàn)了regex庫(kù),初步解 決了這個(gè)問(wèn)題。但是最初的regex無(wú)論在效率上還是可靠性方面都有一些問(wèn)題,后來(lái)經(jīng)過(guò)一次大規(guī)模的翻修之后,達(dá)到了比較完善的程度。

  其他可以選擇的替代品還有C語(yǔ)言的pcre庫(kù),Qt中的QRegExp類等。

  十三、配置管理:Lua

  隨著軟件系統(tǒng)越來(lái)越復(fù)雜,對(duì)軟件的可配置型提出了越來(lái)越高的要求。傳統(tǒng)上只要通過(guò)命令行參數(shù)來(lái)配置的系統(tǒng),現(xiàn)在可能需要越來(lái)越多的方式和機(jī)制。目前越來(lái)越 受歡迎、并且得到越來(lái)越多證實(shí)的做法,是將Lua嵌入到C/C++程序中,而用Lua程序作為配置腳本。這種做法的優(yōu)勢(shì)是,Lua語(yǔ)言強(qiáng)大靈活,可以適應(yīng) 復(fù)雜的配置要求。同時(shí),Lua便于嵌入C/C++程序,而且編譯執(zhí)行速度非??欤梢哉f(shuō)是目前解決C/C++程序配置管理問(wèn)題的一個(gè)出色方案。

  十四、3D游戲引擎:

  1. Irrlicht http://irrlicht.sourceforge.net/

  始于2003,次年即被評(píng)為最佳開(kāi)源游戲引擎。官方支持C++和.Net,拓展語(yǔ)言綁定包含java,perl,ruby,python.跨平臺(tái)支持,使用D3D,OpenGL以及自帶API.

  優(yōu)點(diǎn):容易上手;跨平臺(tái);自帶XML解析器;大的社區(qū);

  缺點(diǎn):最近開(kāi)發(fā)慢下來(lái)了

  2. Panda3D http://www.panda3d.org/

  由迪斯尼開(kāi)發(fā),卡耐基-梅隆娛娛樂(lè)科技中心支持。Python是官方推薦語(yǔ)言。也支持C++。

  優(yōu)點(diǎn):有用的社區(qū);大量功能;定期開(kāi)發(fā);

  缺點(diǎn):缺乏工具支持;極差的文檔;

  3. OGRE http://www.ogre3d.org/

  圖像引擎中最好的一個(gè)。2000年立的項(xiàng)。推薦使用C++語(yǔ)言。需要非常熟悉編程才行。初學(xué)者不宜。

  優(yōu)點(diǎn):大量功能;優(yōu)異的文檔;大規(guī)模的社區(qū);活躍的開(kāi)發(fā)

  缺點(diǎn):不適合初哥;只有圖像引擎

  4. Crystal Space http://www.crystalspace3d.org/main/Main_Page

 ?。保梗梗纺臧l(fā)行,用C++編寫(xiě)的開(kāi)源游戲引擎。推薦使用C++

  優(yōu)點(diǎn):不錯(cuò)的社區(qū)支持;大量功能;

  缺點(diǎn):難學(xué);

  5、Delta3d http://www.delta3d.org/index.php

  Delta3D是一款由美國(guó)海軍研究學(xué)院(Naval Postgraduate School)開(kāi)發(fā)的全功能游戲與仿真引擎,得到美國(guó)軍方巨大的支持與豐厚的投資。該引擎應(yīng)用領(lǐng)域極為廣泛,如開(kāi)發(fā)在培訓(xùn)、教育、娛樂(lè)行業(yè)和科學(xué)計(jì)算可視化領(lǐng)域等方面建模與仿真的軟件。

  它的標(biāo)準(zhǔn)化設(shè)計(jì)把一些知名開(kāi)源軟件和引擎如 Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library (CAL3D), 還有 OpenAL融為一體。Delta3D通過(guò)對(duì)這些底層模塊進(jìn)行隱藏封裝,整合在一起從而形成了一個(gè)使用更加方便的高級(jí)API 函數(shù)庫(kù),使得開(kāi)發(fā)者在必要的時(shí)候能夠使用底層函數(shù)進(jìn)行二次開(kāi)發(fā)。Delta3D在軟件系列中,處于中間層(Middle layer)的位置上。

  優(yōu)點(diǎn):適合各種3D游戲,仿真,很全面。一直在做更新。

  缺點(diǎn):參考資料比較少。中文文檔也比較少。官方參考資料比較少。但是讀源代碼可以加快理解,應(yīng)用。

  tips:目前,我正在研究delta開(kāi)源引擎,并利用其開(kāi)發(fā)一個(gè)小型游戲。

原文鏈接:http://www.cnblogs.com/kanego/archive/2011/11/10/2244957.html

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2015-08-26 08:31:35

核心程序員成長(zhǎng)

2011-04-27 09:21:09

程序員

2015-08-26 09:31:26

程序員建議

2009-06-23 14:07:14

JavaFX

2012-11-08 09:49:30

C++Java程序員

2021-02-26 10:41:59

C++程序員代碼

2011-04-11 17:41:35

C++程序員

2010-01-12 10:40:22

C++程序員

2011-04-01 15:35:15

Java程序員

2014-03-17 10:10:58

CC++編程書(shū)籍

2016-03-25 11:57:23

Java程序員C++

2013-07-18 09:58:18

C++程序員

2010-01-12 14:30:41

C++程序

2015-11-23 17:32:19

新程序員程序員

2020-01-20 14:28:05

程序員技能開(kāi)發(fā)者

2011-06-20 09:43:44

程序員

2017-11-09 18:10:59

程序員騰訊面試官

2010-01-27 17:36:24

C++程序庫(kù)

2023-07-17 10:28:00

C/C++編程接口

2011-03-30 09:26:20

c++程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)