C++開源代碼項目彙總

Google的C++開源代碼項目

v8  -  V8 JavaScript Engine
V8 是 Google 的開源 JavaScript 引擎。
V8 採用 C++ 編寫,可在谷歌瀏覽器(來自 Google 的開源瀏覽器)中使用。
V8 根據 ECMA-262 第三版中的說明使用 ECMAScript,並在使用 IA-32 或 ARM 處理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系統中運行。
V8 可以獨立運行,也可以嵌入任何 C++ 應用程序中。
 
nativeclient  -  Native code for web apps
Native Client是一個在Web應用程序中運行本地代碼(目前只支持x86架構)的開源的研究性技術,提供更好的“富客戶端”用戶體驗。它允許網絡開發者編寫更強大的Web程序,這些程序直接通過系統運行而不用通過瀏覽器來進行,據Google稱,它到最後將允許網絡開發者開發和桌面軟件一樣的的web程序,這些程序將帶來更快的速度。Native Client類似於微軟的ActiveX技術,它還能在Linux和Mac OS X下運行。目前它尚未支持IE,僅支持Google Chrome, Firefox, Safari 和Opera。
 
tesseract-ocr - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
OCR(Optical Character Recognition):光學字符識別,是指對圖片文件中的文字進行分析識別,獲取的過程。
Tesseract:開源的OCR識別引擎,初期Tesseract引擎由HP實驗室研發,後來貢獻給了開源軟件業,後經由Google進行改進,消除bug,優化,重新發布。當前版本爲3.01.
 
google-glog  -  Logging library for C++
Google glog是一個基於程序級記錄日誌信息的c++庫,編程使用方式與c++的stream操作類似,例:
LOG(INFO) << "Found " << num_cookies << " cookies";
 
double-conversion  -  Binary-decimal and decimal-binary routines for IEEE doubles.
從V8引擎中抽出的有關數值計算相關的代碼,包括大數計算,數值到字符串轉換等
 
googletest  -  Google C++ Testing Framework
gtest測試框架[1]是在不同平臺上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)爲編寫C++測試而生成的。它是基於xUnit架構的測試框架,支持自動發現測試,豐富的斷言集,用戶定義的斷言,death測試,致命與非致命的失敗,類型參數化測試,各類運行測試的選項和XML的測試報告。
 
googlemock  -  Google C++ Mocking Framework
googlemock  mock技術,在c++單元測試可以隨意修改函數行爲的技術。   
googlemock是google基於gtest開發的mock框架,適用於c++單元測試。
 
libphonenumber  -  Google's phone number handling library, powering Android and more
一個專門用於處理電話號碼的庫
 
google-diff-match-patch  -  Diff, Match and Patch libraries for Plain Text
google-diff-match-patch這個類庫提供了強大的算法用於純文本內容的差異比較,匹配,打補丁,實現同步純文本所需要執行一些操作。支持多種語言包括:Java、JavaScript、C++、C#、Objective C、Lua和Python。
 
libkml  -  a KML library written in C++ with bindings to other languages
libKML是解析,生成和操作KML的庫。使用OGC KML2.2標準。
KML,是 Keyhole 標記語言(Keyhole Markup Language)的縮寫,是一種採用 XML 語法與格式的語言,用於描述和保存地理信息(如點、線、圖像、多邊形和模型等),可以被 Google Earth 和 Google Maps 識別並顯示。您可以使用 KML 來與其他 Google Earth 或 Google Maps 用戶分享地標與信息。當然,您也可以從 Google Earth 社區 等相關網站獲得有趣的 KML 文件。Google Earth 和 Google Maps 處理 KML 文件的方式與網頁瀏覽器處理 HTML 和 XML 文件的方式類似。像 HTML 一樣,KML 使用包含名稱、屬性的標籤(tag)來確定顯示方式。因此,您可將 Google Earth 和 Google Maps 視爲 KML 文件瀏覽器。單擊此處可獲得更多信息。
 
gdata-cpp-util  -  Google Data APIs C++ utility library
一個Google Data APIs 的工具庫,可以GET/POST/PUT/DELETE
 
lutok  -  Lightweight C++ API for Lua
是一個 Lua 的 C++ wrapper
Lua 是一個小巧的腳本語言。是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)裏的一個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發。 其設計目的是爲了嵌入應用程序中,從而爲應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在所有操作系統和平臺上都可以編譯,運行。Lua並沒有提供強大的庫,這是由它的定位決定的。所以Lua不適合作爲開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平臺上的即時編譯功能。
 
dcs-bwt-compressor  -  Data compressor program and library
dcsbwt是一個基於Burrower-Wheeler變換的數據壓縮程序庫
 
treetree  -  generic n-ary trees for C++
TreeTree (http://code.google.com/p/treetree/)是一個只包含頭文件的 C++ Library。它實現了一個通用的 樹形結構容器類(遵守 STL約定),並且實現了 operator >> 和 operator <<。
它的底層包含一個雙向鏈表。在前項指針和後項指針以外,每個樹節點還包含第三個指針--指向所有子節點的列表。這個實現高效,並且 API 非常清晰。TreeTree 可以表達任何使用Lisp的S表達式能表達的東西(例如推理樹(inference trees, programs)等)。
可以使用前序和後序遍歷,只遍歷某個節點的子節點,或者只是在葉子節點遍歷。示例的選項還包含遍歷子樹(如f(g(x,y),z) 前序遍歷,是f(g(x,y),z), g(x,y),x,y和z.
 
ctemplate  -  Powerful but simple template language for C++
ctemplate (Google-ctemplate)的設計哲學是輕量級,快速,且邏輯和界面分離,因此和ClearSilver和Teng是有一些差異的。比如Ctemplate就沒有模板函數,沒有條件判斷和循環語句(當然,它可以通過變通的方式來實現)。   ctemplate大體上分爲兩個部分,一部分是模板,另一部分是數據字典。模板定義了界面展現的形式(V),數據字典就是填充模板的數據(M),你自己寫業務邏輯去控制界面展現(C),典型的MVC模型。
 
sparsehash  -  An extremely memory-efficient hash_map implementation
Google Sparse Hash 是 Google 一個很節省內存的 hash map 實現
 
gflags  -  Commandline flags module for C++
Google GFlags 是一個命令行標記的處理庫,它可以替代“getopt()”,其內置對C++的支持比如string。
 
protobuf  -  Protocol Buffers - Google's data interchange format
Google Protocol Buffer 是一個平臺無關、語言無關的結構化數據的序列化與反序列化工具。
protocol buffer,可以用來在跨進程、跨機器,不同操作系統,不同編程語言之間進行數據交換。類似於微軟的COM IDL或者XML,但是解析速度更快,需要傳輸字節數更少。(c+
+, java, python)
 
gperftools  -  Fast, multi-threaded malloc() and nifty performance analysis tools 
TCMalloc,heap檢測,是一個google用於性能檢測的工具。(c++)
 
google-breakpad  -  Crash reporting

breakpad,一個項目的開始需要做一些什麼樣的基礎設施,crash dump和運行logging毫無疑問都是應該有的,這個項目就是負責在crash的時候收集信息,發出crash dump報告的。

經典的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 GeometryAlgorithms Library計算幾何方面的大部分重要的解決方案和方法以C++庫的形式提供給工業和學術界的用戶。

其它目前我感覺還不是很爽的C++庫: 

Doxygen ----註釋文檔生成工具 ,可恨的是我找不到 windows版本

QT ----------大名頂頂的一個多平臺的C++圖形用戶界面應用程序框架(GUI庫)可氣的是他的Windows版是商業發佈的要付費

xml4c--------IBM開發的XML Parser,系超重量級的,適用大型應用中,其DLL有 12M,恐怖吧,輕量級的有TinyXml

Xerces c++ --Apache的XML項目, 但 只支持少數的字符編碼,如ASCII,UTF-8,UTF-16等,不能處理包含中文字符的XML文檔

XMLBooster -----  也是一種  XML的 解析工具

Fox  -------又一種開放源代碼(C++)的GUI庫,功能不是很強

 

C++開發環境(Win平臺下除了 VisualC++ 和 Borland C++以外的):

Cygwin --------Windows下的一個Unix仿真環境

MinGW  --------GCC的一個Windows移植版本

Dev C++ -------- 一個C/C++ 的集成開發環境,在Windows上的C++編譯器一直和標準有着一段距離的時候,GCC就是一個讓Windows下開發者流口水的編譯器。

Eclipse-CDT  ----IMB 開發的一個集成開發環境,一般用來作爲Java 開發環境,但由於Eclipse 是通過插件體系來擴展功能,這裏我們 安裝 CDT插件後,就可以用來作爲C++集成開發環境工具。

50個知名的開源網站

1、http://snippets.dzone.com/tag/c/--數以千計的有用的C語言源代碼片段

2、http://www.hotscripts.com/category/c-cpp/scripts-programs/Hotscripts --提供數以百計的C和C++腳本和程序。所有程序都分爲不同的類別。

3、http://www.planetsourcecode.com/vb/default.asp?lngWId=3--超過萬行C和C++免費的源代碼

4、http://freshmeat.net/browse/164/--超過9000個C編寫的項目。

5、http://www.daniweb.com/code/c.html--DANIWEB提供的實用代碼段。

6、http://www.programmersheaven.com/tags/C/--programmersheaven.com上的C編程資源。

7、http://www.ddj.com/code/ddj.html--Dr. Dobb’s Journal的源代碼。

8、http://www.cprogramming.com/cgi-bin/source/source.cgi--C和C + +編程資源。

9、http://private.codecogs.com/--CodeCogs是一項協作的開放源碼庫,C/C++的數值方面的組件。

10、http://www.google.com/codesearch?q=programming++lang:c&cs_r=lang:c--谷歌代碼的C源代碼。

11、http://www.codepedia.com/1/C--CodePedia是一個開放的關於系統編程和其他與電腦有關的議題。

12、http://www.cis.temple.edu/~ingargio/cis71/code/--爲學生提供的一個簡單的C語言程序的列表。

13、http://www.codeproject.com/?cat=2--codeproject提供的C/C++資源代碼項目。

14、http://www.thefreecountry.com/sourcecode/cpp.shtml--以下是一些C和C++庫的DLL,VCLs,源代碼,元件,模塊,應用程序框架,類庫,源代碼片段等,你可以在您的項目中使用而不需要支付費用和版稅。

15、http://people.sc.fsu.edu/~burkardt/cpp_src/cpp_src.html--這是一個全面的關於C++的345個源代碼清單。

16、http://www.cplusplus.com/src/--C++寫的通用控制檯程序和Windows程序代碼清單。

17、http://users.cs.fiu.edu/~weiss/dsaa_c++/code/--C++語言數據結構與算法分析(第二版)的源代碼。

18、http://c.snippets.org/--C源代碼片段。

19、http://www.bbdsoft.com/downloads.html--C++源代碼。

20、http://www.moshier.net/天文學和數值軟件源代碼

21、http://cplus.about.com/od/cgames/C_Games_with_Source_Code.htm--遊戲有關的C++源代碼。

22、http://cliodhna.cop.uop.edu/~hetrick/c-sources.html--免費的C/C++數值計算源代碼。

23、http://www.mathtools.net/C_C__/Utilities/index.html--C/C++工具。

24、http://www.programmerworld.net/resources/c_library.htm--免費C++源代碼和其它有用的工具。

25、http://www.cmcrossroads.com/bradapp/links/cplusplus-links.html--布拉德阿普爾頓的C++鏈接-資源,項目,圖書館,教學和編碼。

26、http://www.robertnz.net/cpp_site.html--這是一個收集了數C/C++網站鏈接列表的網頁。

27、http://www.josuttis.com/libbook/examples.html--在這裏,你可以看到並下載所有的本書的C++標準庫例子。

28、ftp://66.77.27.238/sourcecode/cuj/--C/C++用戶雜誌

29、ftp://66.77.27.238/sourcecode/wd/--Windows開發者網絡

30、http://www.einet.net/directory/65892/Developers.htm--C程序

31、http://www.daniweb.com/code/cplusplus.html--實用代碼段。

32、http://snippets.dzone.com/tag/c--C++源代碼

33、http://www.programmersheaven.com/tags/C--C++編程資源,programmersheaven.com

34、http://www.google.com/codesearch?hl=en&lr=&q=programming--谷歌代碼搜索-C++編程語言

35、http://www.codepedia.com/1/Cpp--CodePedia是一個開放的關於系統編程和其他與電腦有關的議題的網站。

36、http://www.codebeach.com/index.asp?TabID=1&CategoryID=3--C++源代碼,Codebeach提供

37、http://freshmeat.net/browse/165/--5000項目寫的C++編程語言

38、http://cplus.about.com/od/codelibrary/Code_Library_for_C_C_and_C.htm--代碼庫C、C + +和C#。

39、http://www.c.happycodings.com/--Visual Basic、PHP、ASP技術、C、C++大全。

40、http://www.blueparrots.com/--Borland C遊戲,圖像和聲音源代碼範例。

41、http://www.java2s.com/Code/Cpp/CatalogCpp.htm--C++源代碼。

42、http://www.yeohhs.com/modules/mydownloads/--C與C++電子書和源代碼示例。

43、http://www.brpreiss.com/books/opus4/programs/index.htmlC++的數學方程和公式源代碼。

44、http://users.cs.fiu.edu/C++。

45、http://www.josuttis.com/libbook/examples.html--C++標準庫-教程和參考資料。

46、http://emr.cs.uiuc.edu/~reingold/calendars.shtmlEdward M. Reingold's Calendar Book, Papers, and Code。

47、http://cpp.snippets.org/--c++源代碼檔案。

48、http://ubiety.uwaterloo.ca/~tveldhui/papers/techniques/--用C和C++的解決科學問題。

49、http://c.ittoolbox.com/topics/core-c/--C/C++的IT工具框。

50、http://www.le.ac.uk/cc/tutorials/c/ccccdbas.html--本文件中包含有大量的C示例程序


下面結合自己多年的開發經驗,想到哪裏寫到哪裏,希望對新人有一定的幫助。

一、網絡

網絡庫必須掌握 ACE 和 libevent, 一個是重量級的網絡庫, 一個是輕量級的網絡庫。仔細想想,現在那個程序不用網絡啊。不懂網絡,你將寸步難行啊。熟悉這兩個開源庫的    前提是你必須懂socket的原理,給大家推薦的好書就是《UNIX網絡編程》,看懂這本書就可以了,其他的什麼《windows網絡編程》這些都不用看,因爲網絡編程,你學會了伯克利的套接字,你就可以在任何平臺上進行網絡編程了,不需要學什麼windows下的網絡編程,因爲windows下的網絡也是從伯克利套接字搞過來的,如果你學習《windows網絡編程》,那麼你那天在linux,unix下進行網絡編程,你還得在學習一下。沒有那個必要。

二、數據庫

數據庫嘛,開源的Mysql和開源的PostgreSQL只要懂其中一個就可以了,商業數據庫在掌握一個Oracle就可以了,文件數據庫掌握 sqlite。不過請大家注意,不要被上面數據庫名字給迷惑了,數據庫的本質是SQL語句,一定要懂數據庫的基本原理,熟練應用SQL語言,懂數據庫的優化,存儲過程等。數據庫的原理搞懂了,拿什麼數據庫過來都輕鬆掌握,就不會在乎是Mysql還是Oracle了。

三、日誌操作

日誌操作推薦大家熟悉 log4cpp這個日誌庫, 支持多線程, 日誌重定向到網絡等都有, 反正你能想到的日誌的功能都有。日誌嘛,一個是方便查找問題,方便記錄程序運行的一些情況。這是必須的。

四、管理後臺

衆所周知,寫程序是給其他人用的,不是自己用,所以在程序的易用性上,多給對方提供一些可以直接查看的管理界面,顯得分成重要。爲程序提供一個web的管理界面,方便用戶登錄上去查看程序的各種信息,很有必要。

五、讀取配置文件

所有的程序都必須有配置文件,方便配置一些項目,爲程序提供靈活性。 所以寫程序,必須有讀取配置文件的封裝類。

六、內存池

所有的進程都需要分配內存,對C/C++來說,分配和管理內存是已經很有挑戰性的工作。給大家推薦 nedmalloc 這個開源的內存池庫。nedmalloc是一個跨平臺的高性能多線程內存分配庫,很多庫都使用它。

七、緩存庫

衆所周知,緩存庫用得最多的就是memcache了。在做數據庫開發的時候特別有用。

八、腳本

腳本是一個很有意思的東西,很多功能,其實我們只要寫個腳本就可以完成,代碼量少,開發速度快。必須掌握的腳本,比較通用的要算 perl 了,很古老的語言,但是功能太強大了。我可以保證的說,.net,java能幹的工作,肯定可以讓perl來幹。C能幹的, perl不一定能幹。perl作爲linux,unix的系統集成的腳本語言,必須學會。

lua 語言,在遊戲行業用得比較多。

python 腳本,功能很強大,推薦學。

上面這些是所有程序都會用到的比較通用的功能。

在不同的應用領域,需要掌握不同開源庫,比如搞遊戲開發的,可能需要掌握開源的UI庫CEGUI、duilib, 開源的3D引擎OGRE等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章