C++ 開源庫,很完整介紹【轉】

【轉】http://blog.csdn.net/lixingshi/article/details/22714783

向C++初學者推薦的幾個開源庫
標籤:  STL  boost  SDL  wxWidgets  開源庫  推薦  2009-07-04 22:47


前陣子寫了《C++ 的“武”和“功”》。談到C++語言知識,屬於“功”,而那些強大的C++庫,屬於“武”,屬於十八般武藝。

這篇文章我首先把《白話C++》書中講到C++庫,及相關工具,簡單做個介紹。這些庫我是怎麼爲C++初學者挑出來的呢?

(一)、它們必須都是開源產品,又爲什麼要是開源的呢?


    1.1、十年前的國內C++學習者,可以完全不必理會開源庫,但在幾年,編程界中的人,如果敢無視開源力量,那真夠火星的。從Java的各個流行的庫,到Java語言(實現)自身也開源了,再看那些強大的動態語言:PHP、Python,Ruby,開源環境簡直就是它們呼吸的空氣。今天在Linux界吵得沸沸揚揚的Mono,就是開源.Net。C/C++其實才是開源的鼻祖。十五年前,會Borland的OWL,是大拿,十年前,會MS的MFC或Borland的VCL,就可以風光地混飯吃。現在呢?你還準備學哪個商業的庫?


    1.2、當然也不是完全反對商業的庫,但商業上的東西,自然就會有其廠商爲它們大力推動。我們可以不去湊這個熱鬧。
 

    1.3 我在書上數據庫的部分,主要講C++如何使用MySQL,而不是Oracle或SQLServer。因爲作爲軟件開發者,出於軟件人的利益,我希望正版意識被人接受(無論開源的或商業的),並且我相信正版化是趨勢,所以我不希望我的讀者爲了讀我的書,去盜版或花數萬甚至十數萬去買數據庫。或許有些商業軟件提供學習版,但功能受限。

(二)、它們必須都是成熟的產品。

    或者背後有類似IBM這樣的大公司在支持,比如xerces-c,或者在業界中許多成功的案例,像MySQL就是使用量天下第一的數據庫。或者它們超長的發展史,已經通過無數應用被證明是穩定的,比如wxWidgets,在MaximumPC雜誌最近評出的32個“每臺新PC中最重要的應用軟件”中,使用wxWidgets構建的,就佔了5個。至於iconv所提供的編碼轉換,那是所有Linux發行版內置的基礎組件。最後一點我想也很重要,所有我在書講解的C/C++庫及軟件,都在本人最近5年的實際工作中使用過(順帶,我嚴格尊守了相關的開源協議)。

(三)、它們都是跨平臺的產品。

   C++在“商業應用”方面,曾經是天下第一的開發語言,但這一桂冠已經被java搶走多年。因爲當今商業應用程序類型,已經從桌面應用迅速轉移成Web應用。當Java橫行天下之後,MS又突然發力,搞出C#語言,有大片的曾經的C++程序員,(包括我)以爲C++要就此沉淪,未料,這三年來,C++的生命力突然被嚴重地增強了。主力原因就是開源的軟件、基礎軟件(比如併發原生支持,比如Android必定要推出原生的SDK)、各種跨平臺應用(比如Firefox)的出現。如果我此時教各位侷限於Windows下的C++,我該教什麼呢?
 

(四)、它們必須是相對通用的庫

   因爲要推薦給最終專業及行業尚未確定的初學者,庫就應該是“基礎”型的,比如STL和boost。通用型的,比如用於解析XML的xerces-c或正則表達式,屬於工具類,無論在做什麼編程,都用得上。或者是樂趣型的,比如SDL。

    多說無用,上菜。


    STL:C++標準模板庫,呵呵,它也是開源的嘛。>>

    wxWidgets :使用wxWidgets ,開發者可以基於同一套代碼,爲Win32, Mac OS X, GTK+, X11, Motif, WinCE等平臺開發應用程序。wxWidgets庫可以被C++, Python, Perl, and C#/.NET等開發語言使用。跟其它有些同樣支持跨平臺GUI開發工具不同,基於wxWidgets的應用,擁有真實本地化的視覺及使用效果——因爲,wxWidgets使用(各)平臺原生的控件,而不是簡單通過貼圖去模擬。wxWidgets是使用廣泛的,自由的,開源的,成熟的。
    
    mysql / mysql++: 不用介紹吧。現在Oracle手裏,但我很放心。

    boost:C++準標準庫,它是強大地,江湖稱之“千錘百煉”。

    iconv /iconvpp : (C形式的編碼轉換函數庫,及本書作者用C++語言對iconv的簡單封裝)


    xerces-c :個人認爲最完整,最強大的XML解析庫了,不是僅僅在開源庫裏,你儘管把商業的算在內。當然,它的變體,被IBM拿去賣錢的那個版本,多了數百兆的東東來支持各國編碼轉換,是更強大,但我覺得有小小的,開源的iconv在前不就夠了?

    xsd (XML 與 C++數據結構的綁定工具)。(商業使用要錢)

    deelx (輕量級的正則表達式解析類庫,國產),boost裏有強大的正則表達式解析庫,但如果你只想要一個表達式解析,不想要拖上龐大的boost庫時……支持一下國貨。

    SDL (Simple DirectMedia Layer/多媒體直接訪問層,用於遊戲編程)。

    gSOAP SOAP協議的C++支持庫及代碼生成工具。

  
    看起來,這些庫功能都強大的,又是開源的,真是天上掉餡餅了?也不是,代價就是,你必須熟悉開源C++的規則,通常它們就是源代碼,你必須自己編譯它們。爲此《白話C++》裏,專文一章,用來講解如何編譯、安裝各類的庫及軟件。但對缺少經驗,奇怪問題總是會有,很多讀者會有怨言了。C++好複雜啊!開始退縮了,我真的需要學習這麼庫嗎?我光學習C++語言不行嗎?坦白地講,光學習任何語言都不行。學一個java能有什麼公司要你?如果你不會它的任何框架,一個Python語言真的那麼強大的?如果剝掉它那來自五湖四海的衆多庫。

     好吧,很多人決定堅持下來,但他們問我,我的堅持有沒有意義,我即將受的苦,對我有沒有好處?這就是說,大家會把這些“庫”的學習,不知不覺地,當成了負擔!精力上的,及心理上的負擔。所以,接下來,我說說我的看法:學習庫,是有累的地方,但更多的是好處。

    任何人學習語言的過程,其實都不僅僅是“學”,而應該還有一個“習”。所謂,“習”,就是並不是簡單的“練習”,而是“應用”。不是嗎?就像學習英語,如果光抱着書大啃,只用來應付考試可能沒事,但會學習得很苦。如果學一點就能找老外說一點,肯定會很有樂趣,並且進展神速——我說這話可不是憑想像!那是完全有根據了。去年因爲大學生交換,我手下交換來一位德國漂亮女生,會說英語。我每天帶她去吃午飯,又有動力,效果又好啊。:)

    前面那些庫,有做界面的,有數據庫的,有做遊戲的,有XML解析的,有SOAP協議,還有一些沒舉出的,線程,網絡……光學C++語言本身,沒有這些,我們的樂趣從何而來?我們的成就感從何而來?光是那個黑黑的控制檯裏的字符界面嗎?“Hello world”帶給C++初學者的樂趣,竊以爲能持續一個下午,就不錯了。

    可能學編程中的,是有人會走“苦行僧”路線,那種路線具體效果如何,我不瞭解,我自己學編程,都會學一點點,就會想寫個小工具什麼來的,一來在應用中驗證和鞏固一下剛學的知識,二來還會從中發現自己缺少的知識點,然後帶着問題去學習後面的新內容。

    學習肯定是要興趣的,如果僅僅說,“應用”就是爲了培養學習者的“興趣”,那還是低估了應用的作用。

 

 http://gzjsgdsb.blog.163.com/blog/static/2401730220097531123865/?fromdm&fromSearch&isFromSearchEngine=yes

C++開源跨平臺類庫集   

2009-08-05 15:11:23|  分類: c++ |  標籤: |字號 訂閱

在如下的庫支持下,開發的系統可以很方便移植到當前大部分平臺上運行
而無需改動,只需在對應的平臺下 用你喜歡的編譯器 重新編譯即可

經典的C++庫
   STLport-------SGI STL庫的跨平臺可移植版本,在以前有些編譯器離符合
         標準比較遠的情況下 那時還是有用的,當然目前vc71已經比較接近標準了,
         故目前不怎麼用它了。
   Boost---------準標準庫, 功能強大 涉及能想的到的大部分非特別領域的算法,
         有一個大的C++社區支持
   WxWindows-----功能強大的跨平臺GUI庫  ,它的功能和結構都類似 MFC,故原則上
      可以通過WxWindows把現有MFC程序移植到非Win平臺下
   Blitz---------高效率的數值計算函數庫 ,你可以訂製補充你需要的算法
   Log4cpp-------日誌處理  ,功能類似java中的log4j
   ACE-----------自適應通訊環境, 重量級的通訊環境庫。
   Crypto++ -----加/解密算法庫, 非常專業的C++ 密碼學函式庫
   CppUnit  ---  一個c++的單元測試框架  類似 java  的JUnit 
   Loki -------  一個實驗性質的庫,嘗試把類似設計模式這樣思想層面的東西通過
        庫來提供,他是C++的一個模板庫,系C++"貴族", 它把C++模板的功能發揮到了極致

學術性的C++庫: 
   FC++ --------The Functional C++ Library  ,用庫來擴充語言的一個代表作 ,模板庫
   CGAL ------- Computational Geometry Algorithms Library計算幾何方面的大部分重要的
     解決方案和方法以C++庫的形式提供給工業和學術界的用戶。


其它目前我感覺還不是很爽的C++庫:  
   Doxygen  ----註釋文檔生成工具 ,可恨的是 我找不到 windows版本
   QT ----------大名頂頂的一個多平臺的C++圖形用戶界面應用程序框架(GUI庫)
          可氣的是他的 Windows版 是商業發佈的要付費
   xml4c--------IBM開發的XML Parser,系超重量級的, 適用大型應用中, 其DLL有 12M,恐怖吧
   Xerces c++ --Apache的XML項目, 但 只支持少數的字符編碼,如ASCII,UTF-8,UTF-16等,
           不能處理包含中文字符的XML文檔
   XMLBooster -----  也是一種  XML的 解析工具
   Fox   -------又一種開放源代碼(C++)的GUI庫,功能不是很強


C++開發環境(Win平臺下除了 Visual C++ 和 Borland C++以外的):
   Cygwin  --------Windows下的一個Unix仿真環境
   MinGW   --------GCC的一個Windows移植版本
   Dev C++ -------- 一個C/C++ 的集成開發環境,在Windows上的C++編譯器一直和標準有着一
        段距離的時候,GCC就是一個讓Windows下開發者流口水的編譯器。
   Eclipse-CDT  ----IMB 開發的一個集成開發環境,一般用來作爲Java 開發環境,但由於
         Eclipse 是通過插件體系來擴展功能,這裏我們 安裝 CDT插件後,就可以用來作爲
         C++ 的集成開發環境

 

 

 

 

http://gzjsgdsb.blog.163.com/blog/static/2401730220097531123865/?fromdm&fromSearch&isFromSearchEngine=yes

五大開源遊戲引擎介紹  

2009-11-03 10:24:58|  分類: 網絡編程 |  標籤: |字號 訂閱

http://developer.51cto.com/art/200907/138802.htm

對遊戲編程初哥來說,選擇一個好的遊戲引擎是一個很頭疼的事。市面上魚目混雜,並且價格不菲。今天我要隆重推出開源遊戲引擎五強(嚴格上說是四個,有一個是圖像引擎)。他們不僅被證明是可靠的,而且全部開放源碼。

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. jME (爪哇猴子引擎) http://www.jmonkeyengine.com/

全部由Java實現。最流行的Java遊戲引擎之一。

優點:容易上手;活躍的社區;內置物理引擎

缺點:我不太知道,因爲沒用過

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

圖像引擎中最好的一個。2000年立的項。推薦使用C++語言。需要非常熟悉編程才行。初學者不宜。

優點:大量功能;優異的文檔;大規模的社區;活躍的開發

缺點:不適合初哥;只有圖像引擎

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

1997年發行,用C++編寫的開源遊戲引擎。推薦使用C++

優點:不錯的社區支持;大量功能;

缺點:難學;

我個人的經驗是,C++初學者應從Irrlicht着手,這是最容易上手的。我沒有Java編程經驗,所以不好說什麼。但是我認爲jME還是可以踹踹的,很好的社區支持

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章