經典開源C/C++項目
C/C++ SOAP工具包 gSOAP
gSOAP一種跨平臺的C和 C++軟件開發工具包。生成C/C++的RPC代碼,XML數據綁定,對SOAP Web服務和其他應用形成高效的具體架構解析器,它們都受益于一個XML接口。 這個工具包提供了一個全面和透明的XML數據綁定解決方案,Autocoding節省大量開發時間來執行SOAP/XML Web服務中的C/C++。此外,使用XML數據綁定大大簡化了XML自動映射。應用開發人員不再需要調整應用程序邏輯的具體庫和XML為中心的數據,如 交涉DOM。
功能和特點
可移植性:gSOAP支持大多 數平臺,包括嵌入式系統和小系統(例如嵌入式Symbian,Palm)。可移植性測試Windows(98,XP,Vista),Linux,Unix 系統,Mac OS X,Solaris,HP-UX,AIX,FreeBSD,TRU64,Irix,QNX,VxWorks。穩定性:該軟件已經成熟。自2001年以來經過幾年的發展和試驗。許多工業項目和產品都在使用該軟件。
廣泛的用戶群:自2003年以來超過150000次下載,成千上萬許可證/支持協議的公司,其中包括一些財富100強企業。
所有功能于一身的軟件包:獨立第三方工具和庫確保可靠的運行執行。
開源:可選擇自由和商業許可。
C和C++的支持:支持純粹的ANSI C和混合的C/C++應用開發。
綜合XML數據綁定: gSOAP是唯一的SOAP/XML工具包,支持一個純粹的本地的C/C++數據綁定到XML。該工具包是以自動序列指針為基礎的數據結構。
行業標準協議: SOAP 1.1/1.2 WSDL 1.1,v2和UDDI 。支持XML架構原始XSD結構類型等等。
傳 輸:HTTP/S, TCP, UDP, MIME (SwA), DIME (streaming), MTOM (streaming), HTTP1.0/1.1, IPv4, IPv6, RSS, XML-RPC, WS-Addressing, WS-Enumeration等
安全:HTTPS和WS安全性:認證令牌,數字簽名。
速度:架構特定的編譯器生成的代碼速度快。基準測試表明速度優于最快的XML解析器。
占用內存小:客戶端應用程序總運行內存占用很小。內存管理使用垃圾收集,可以自動清理。
許多例子:軟件包,包括許多代碼范例,其中包括獨立的HTTP/1.1和HTTPS安全的Web服務器。
Web服務器整合:包括Apache_mod, IIS, WinInet, CGI, FastCGI。
</div> </div>跨平臺C + +庫 CrissCross
CrissCross是一種小型的跨平臺C + +庫,用于處理控制臺和文件I / O , CPU的識別( CPUID ) ,散列( MD2 , MD4 , MD5編碼,了SHA - 1 ,SHA- 256 ,SHA- 512 ,Tiger) ,Socket( TCP和目前唯一的UDP )和數據結構( LList , DArray , RedBlackTree , AVLTree , SplayTree等) 。其目的是運行在Windows , Linux , FreeBSD的, OpenBSD系統, NetBSD的, Mac OS X的,甚至是NDS 。其他平臺可能成為支持的請求。其主要思想是提供的能力,寫一個程序使用相同的呼吁主要平臺,而無需重寫代碼。
C++ Web工具包 Wt
Wt(音同'witty')是一個C++庫,同時也是開發和部署web應用的服務器。 Wt不是所謂框架(framework),它只是一個庫,它不會將編程方式強加于開發者。
Wt的API是以widget為中心(widget-centric)的,并受到現有C++圖形用戶界面(GUI) 的應用編程接口(APIs)的啟發。Wt為開發者提供了幾乎所有web實現細節的抽象,其中 包括事件處理和圖像支持。
基于頁面的web應用開發框架(Page-based frameworks),如PHP、JSP/JSF (+servlets+struts)等,沒有實現對一些最基本技術的特性的抽象,這些技術包括 HTML/XHTML、JavaScript、CSS、AJAX、 Forms、DHTML、SVG/VML/Canvas等,顯然基 于頁面的開發框架(frameworks)必須要求開發者隨時熟悉和掌握這些基本技術。另外, 當選擇某一種基本技術時(如當前流行的AJAX),開發者則要對該技術的優雅降級 (graceful degradation)負責,比如當AJAX或JavaScript已經不復存在或某些功能失效 時。同時,應用程序結構還要遵循早期HTML以頁面為基礎的開發范式。作為一個AJAX開 發者,這就意味著他需要手工設計和維護客戶端/服務器端的通訊。
盡管開發者有時不希望,但為了生成HTML代碼或填充HTML模板會在頁面中插入 JavaScript,如此操作則會帶來安全風險,如跨站腳本(XSS:Cross-Site-Scripting)。 但是,模板框架(template frameworks)本身無法避免這種情況的發生,因為開發者總是 需要插入自定義的JavaScript來提高web應用。
相比之下,使用Wt開發的web應用就要好許多,因為這樣的應用只使用一種編譯 語言(C++),而且生成必要的HTML/XHTML、Javascript、CGI、SVG/VML/Canvas以及 AJAX代碼的任務都交給Wt庫完成。自然地,web開發的安全性和瀏覽器可移植性問題也都 交給了Wt。另外,在可能的情況下,Wt將最大限度地使用JavaScript和AJAX;特別 地,在不支持AJAX的情況下,采用Wt開發的web應用仍能正常工作,因為Wt采用了 轉回普通HTML/CGI的機制(reverting to a plain HTML/CGI mechanism),保證了 瀏覽器與服務器之間的正常通訊。
典型應用舉隅:
- 由于Wt web應用服務器占用較低的內存(low footprint),故而可以為 可聯網的嵌入式系統(web-enabled embedded systems) 提供基于web的圖形 用戶界面(GUI);
- Wt可以為需要 整合現有C++庫 的應用提供基于web的圖形用戶界面(GUI), 這些應用包括科學上的或工程上的應用;
- Wt可以創建從 現有C++桌面應用 到web的有效渠道(port)。
使用Wt的好處
- 可以象開發C++桌面應用一樣開發web應用;
- Wt提供最基本的(plain)widgets,這些widgets可以在運行環境不支持 JavaScript的情況下照常工作(當然,如果支持的話效果會更好)。同時Wt::Ext命名 空間下的widgets工作效果會更酷(more polished),而且可以提供更高級的功能, 但是會需要對JavaScript的支持以及更為流行的瀏覽器。以上兩類widgets在Wt中共享 同一套應用編程接口(API);
- Wt提供兩種開發與部署模式,即使用Wt內置(build-in)httpd或者FastCGI連接器 (connector),前者在Wt內較容易實現,而后者則實際上是在開發FastCGI應用;
- 客戶端與服務器端在驗證(validation)和事件處理(event handling)方面采用同 一原則(a single specification),即兩種應用下,開發者在服務器端使用C++編寫, Wt既在服務器端生成C++代碼,又同時在客戶端生成JavaScript代碼;其中事件處理特 指使用無狀態槽(stateless slot)實現的情況;
- 可以產生標準的、符合HTML/XHTML規范的代碼;
- 使用內聯VML、SVG、HTML 5 Canvas可以提供可移植的(portable)、抗鋸齒圖像 (anti-aliased graphics);
- 無跨站腳本(XSS)風險,因為Wt完全控制表示層(presentation layer),并提前 (proactively)過濾掉 活動(active) 標簽(tags)和屬性(attibutes),這樣很好地 隱藏了駐留在服務器端的業務邏輯(business logic);
- 基于Wt的應用載入時間極短(ultra-fast load time),同時占用較低帶寬 (low bandwidth usage),當然也會受到顯示內容復雜程度(screen complexity)的影響, 但肯定不會是應用程序的大小。
common c++
commonc++ 是一個 C++ 類庫,用于在編寫跨平臺的程序時提供統一的接口和方法。commonc++ 封裝了例如線程、信號、網絡通訊、進程調度、日志、共享內存等等的功能,以便于編寫跨平臺的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++庫的形式提供給工業和學術界的用戶。
wxWidgets和其它類似的GUI(圖形用戶界面,下同)庫比如MFC或者OWL一個最本質的區別在于,它是跨平臺的。
from:http://blog.csdn.net/caizhongda/article/details/6667935
來自: http://www.cnblogs.com/dkblog/archive/2011/08/19/2145939.html