當前位置:首頁 » 編程軟體 » zthread編譯

zthread編譯

發布時間: 2022-06-08 15:35:04

① mangos和ScriptDev2編譯教程(要6767的,能成功的)

一、先決條件:

1. Visual Studio 2003 或者是Visual Studio 2005這個是編譯必備。
2. Mysql 4.1 去官方下在4.1.22版本的就可以或者更高版本
3. Navicat2005資料庫管理器,配合MySQL用,完美極了
4. TortoiseSVN 下載更新工具。稍後我會解釋如何更新源代碼
5. 創建好mangos源代碼和ScriptDev腳本源代碼文件夾

二、開始編譯准備工作:

1.安裝好TortoiseSVN,進入建立好的"mangos源代碼"文件夾,在空白處點右鍵,然後看下面的
流程:
選SVN Checkout--->在URL處輸入:https://svn.sourceforge.net/svnroot/mangos/trunk (mangos源碼的更新地址)--->選中Omit externals--->OK,開始更新
等待它更新到最新的版本就好了
ScriptDev腳本的下載過程是一樣的,它的更新地址是:http://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2

三、准備資料庫建立:

1.安裝好MySQL,裝好就有一個設置向導,把密碼設置成root.
2.安裝好Navicat2005,在File下拉菜單選ADD...,在password地方添root.然後ok.
3.雙擊localhost,然後變綠了,右鍵點擊localhost--->new database--->

創建"mangos""realmd"兩個庫.

4.雙擊mangos,使之變綠,右鍵點擊mangos--->execute batch file--->選擇你下載的mangos.sql文件(源代碼的sql文件夾下有一個空 的什麼數據都沒有,只有表...)--->打開

5.realmd同上

四、開始編譯:

1.編譯mangos文件:

進入./mangos源代碼/win/,打開mangosdVC71.sln,這個就是需要VS2003編譯的工程。如果是VS2005就需要mangosdVC80.sln,這個就是需要VS2005編譯的工程

在解決方案資源管理器裡面顯示有 8個子工程項目framework,game,mangosd,realmd,script,shared,zlib,zthread
選中script,按del鍵刪除掉。
然後選中shared,它下面有一個common.h
打開它,找到#define EXPECTED_MANGOS_CLIENT_BUILD {xxxx,0} 裡面的四位數字是所支持的客戶端的版本號
TBC的2.1.3版本號就是6898,就改成{6898,0} 然後點保存即可。
一般默認為2.1.3 6898

接下來,在窗口上方有一個"Debug"把它改成"release"
然後點擊生成--->生成解決方案。
好了,漫長的等待以後它就會提示生成7個成功,0失敗。
注意:編譯完game後會出現
framework.lib(ObjectLifeTime.obj) : warning LNK4006: _external_wrapper 已在 shared.lib(ObjectLifeTime.obj) 中定義;已忽略第二個定義
framework.lib(ObjectLifeTime.obj) : warning LNK4006: "void __cdecl MaNGOS::at_exit(void (__cdecl*)(void))" ([email=?at_exit@MaNGOS@@YAXP6AXXZ@Z]?at_exit@MaNGOS@@YAXP6AXXZ@Z[/email]) 已在 shared.lib(ObjectLifeTime.obj) 中定義;已忽略第二個定義
生成日誌保存在「file://d:復件 數據更新winVc71game___Win32_ReleaseBuildLog.htm」中
game - 0 錯誤,2 警告
這兩處警告不會影響什麼的,忽略即可!
2.編譯ScriptDev腳本:
在./mangos源碼/src/bindings裡面新建文件夾,命名為ScriptDev2,
然後把"ScriptDev2腳本原碼"裡面的所有東西復制進去,
然後打開scriptVC71.sln(vs2003)scriptVC80.sln(vs2005) 開始編譯,一樣的把"Debug"改成"Release",漫長過程以後會提示你已經成功生成一個文件

好了,編譯完畢,進到./mangos源碼/bin/release裡面,你會找到:libeay32.dll,libeaysql.dll,mamgosd.exe,MaNGOSScript.dll,realmd.exe 這5個文件。
在根目錄下新建一個叫mangos的文件夾,把以上5個文件拷貝進去就可以了。
現在,到./src/mangosd文件夾下找到mangosd.conf.in,再到./src/realmd下找到realmd.conf.in文件,
把這兩個文件拷貝到mangos文件夾下,並把.in去掉。

用記事本或者UltarEdit32打開這兩個conf文件,修改幾處:
<1>mangosd.conf文件中找到:
LoginDatabaseInfo = "127.0.0.1;3306;xxxx;xxxx;realmd"
WorldDatabaseInfo = "127.0.0.1;3306;xxxx;xxxx;mangos"
把第一個xxxx設置為你的MySQL用戶名,第二個是你的MySQL的密碼。
找到:DataDir="@MangosDATA@" 把""裡面改為:"./"即DataDir="./"
然後保存完事兒
<2>realmd.conf文件中找到:
LoginDatabaseInfo = "127.0.0.1;3306;xxxx;xxxx;realmd"
修改方法同mangosd.conf

五、釋放DBC,MAPS文件:

需要兩個軟體:ad.exe這個是解壓縮地圖的. mpq.exe這個是解壓縮mpq文件的。
1.把ad.exe放入游戲客戶端的目錄下即./World of warcraft,然後新建一個名為"maps"的文件夾
然後,美服TBC客戶端就可以直接運行了。如果是台服TBC,就要把Data文件夾下的enTW文件夾改名為enGB
然後把locale-enTW.MPQ,patch-enTW-2.MPQ,patch-enTW.MPQ這3個文件的TW都改為GB。
運行就可以解壓出地圖來了,弄完以後的maps文件夾大小是1.06G
2.把mpq.exe和zlib.dll放進zhTW裡面,然後:
開始菜單--->運行--->輸入cmd--->到你放mpq.exe的路徑下,例:F:/WOW/DATA/zhTW--->
輸命令:mpq e locale-zhTW.MPQ *.dbc
然後會生成一個目錄Ex....locale-zhTW的,裡面有一個DB開頭的文件夾,把文件夾名字改為dbc,
完工
3.現在把maps,dbc兩個文件夾拷到mangos下面就可以了。

六、修改客戶端reamlist.wtf文件

把裡面的網址改成127.0.0.1即可.

② (120分)C++有工作經驗的進

首先C++一般不是用來進行快速開發的,那樣不如用.NET
如果要學好C++的話,首先標准庫要學好(在這一點上建議不要使用VC6,VC6已經不支持新的標准),至少STL的vector, list, map等這些容器要會使用(建議閱讀《泛型編程與STL》),另外C也要學得很扎實,因為使用C++很多時候是在封裝C。
C++能做的事很多,但標准庫能做的很有限。學在實際應用中,可能要用很多庫,所以查閱文檔的能力更為重要,而不是死抱著MFC或者某一個庫,建議LZ搜索一下「C++名庫」,C++各個方面的應用都能找到。
這里推薦一些著名的庫
綜合:
Boost:在C++界地位僅次於標准庫的庫,異常的強大,但是要用好也要具備十分深厚的C++功底。
參考網站:www.boost.org

圖形界面:
wxWidgets:比MFC強大很多,而且是跨平台的(Windows/Unix/linux/WinCE等),但是跟VC集成的不是很好,推薦使用CodeBlocks(並更新至最新的SVN版本),這個庫是提供源代碼的,最好自己能夠編譯這個庫,可以搜索「編譯wxWidgets」「CodeBlocks + wxWidgets」。
參考網站:www.wxwidgets.org

科學計算:
Bliz++:強大的科學計算庫,速度可以和Fortran想媲美(Fortran曾經是科學計算界普遍使用的語言,也是速度最快的,但其歷史較為久遠,很多編程理念與現在不符,因此C++成為了科學計算的另一個選擇,而Bliz++就是這樣的背景下的產物),本人下載過源代碼並編譯過,但是並不常使用。

網路通信:
ACE,這個沒怎麼用過,但是大型項目中據說用的很多。

XML解析:
Xerces,XMLBooste,Pull Parser,Xalan,CMarkup,libxml++因為這些庫沒有用過,也沒有聽到太多的評價,不好加以評論。

跨平台的多線程支持:
ZThread:這個多線程庫支持多個平台,不僅僅是Windows,也支持Unix/Linux等操作系統,僅編譯過源代碼及其常式,沒有過多使用,也不好加以評論。

3D引擎:
OGRE
OGRE(面向對象的圖形渲染引擎)是用C++開發的,使用靈活的面向對象3D引擎。它的目的是讓開發者能更方便和直接地開發基於3D硬體設備的應用程序或游戲。引擎中的類庫對更底層的系統庫(如:Direct3D和OpenGL)的全部使用細節進行了抽象,並提供了基於現實世界對象的介面和其它類。
參考網站:http://www.ogre3d.org

多媒體:
SDL與FFMPEG:實際上這兩個庫都是C的庫,但並不代表學C++就完全脫離了C,SDL是一個多媒體開發包(包含視頻音頻支持,以及CD\游戲手柄等),FFMPEG是一個視頻解碼庫(對現在許多流行的多媒體格式,mp3, wav, wmv, rm等等進行編碼解碼的支持)(比如QQ影音,暴風影音都用了ffmpeg)
參考網站:www.libsdl.org www.ffmpeg.org

(令,對於C++編程的細節,建議閱讀《Effective C++》、《More Effective C++》,對於大型項目的管理,要對C\C++程序的編譯連接過程有深刻的理解,即,多個C\C++文件怎麼組建為一個可執行文件,建議讀一讀《程序員的自我修養》)

③ 如何才能學好C++

如果你有一定的C基礎可能學起來比較容易些,但是學習C++的過程中又要盡量避免去使用一些C中的思想;平時還要多看一些高手寫的代碼,遇到問題多多思考,怎樣才能把問題抽象化,以使自己頭腦中有類的概念;最後別忘了經常上機自己調調程序,這是誰也代替不了的.

C++類庫介紹
再次體現了C++保持核心語言的效率同時大力發展應用庫的發展趨勢!!在C++中,庫的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了設計庫來擴充功能要好過設計更多的語法的言論。現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重量級的都有。不少都是讓人眼界大開,亦或是望而生嘆的思維傑作。由於庫的數量非常龐大,而且限於筆者水平,其中很多並不了解。所以文中所提的一些庫都是比較著名的大型庫。

標准庫

標准庫中提供了C++程序的基本設施。雖然C++標准庫隨著C++標准折騰了許多年,直到標準的出台才正式定型,但是在標准庫的實現上卻很令人欣慰得看到多種實現,並且已被實踐證明為有工業級別強度的佳作。

1、 Dinkumware C++ Library

參考站點:http://www.dinkumware.com/'>http://www.dinkumware.com/

P.J. Plauger編寫的高品質的標准庫。P.J. Plauger博士是Dr. Dobb's程序設計傑出獎的獲得者。其編寫的庫長期被Microsoft採用,並且最近Borland也取得了其OEM的license,在其C/C+ +的產品中採用Dinkumware的庫。

2、 RogueWave Standard C++ Library

參考站點:http://www.roguewave.com/'>http://www.roguewave.com/'>http://www.roguewave.com/'>http://www.roguewave.com/

這個庫在Borland C++ Builder的早期版本中曾經被採用,後來被其他的庫給替換了。筆者不推薦使用。

3、SGI STL

參考站點:http://www.roguewave.com/'>http://www.roguewave.com/'>http://www.roguewave.com/'>http://www.roguewave.com/

SGI公司的C++標准模版庫。

4、STLport

參考站點:http://www.stlport.org/'>http://www.stlport.org/

SGI STL庫的跨平台可移植版本。

准標准庫——Boost

Boost 庫是一個經過千錘百煉、可移植、提供源代碼的C++庫,作為標准庫的後備,是C++標准化進程的發動機之一。 Boost庫由C++標准委員會庫工作組成員發起,在C++社區中影響甚大,其成員已近2000人。 Boost庫為我們帶來了最新、最酷、最實用的技術,是不折不扣的"准"標准庫。

Boost中比較有名氣的有這么幾個庫:

Regex
正則表達式庫

Spirit
LL parser framework,用C++代碼直接表達EBNF

Graph
圖組件和演算法

Lambda
在調用的地方定義短小匿名的函數對象,很實用的functional功能

concept check
檢查泛型編程中的concept

Mpl
用模板實現的元編程框架

Thread
可移植的C++多線程庫

Python
把C++類和函數映射到Python之中

Pool
內存池管理

smart_ptr
5個智能指針,學習智能指針必讀,一份不錯的參考是來自CUJ的文章:

Smart Pointers in Boost,哦,這篇文章可以查到,CUJ是提供在線瀏覽的。中文版見筆者在《Dr. Dobb's Journal軟體研發雜志》第7輯上的譯文。

Boost 總體來說是實用價值很高,質量很高的庫。並且由於其對跨平台的強調,對標准C++的強調,是編寫平台無關,現代C++的開發者必備的工具。但是Boost 中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。並且很多Boost中的庫功能堪稱對語言功能的擴展,其構造用盡精巧的手法,不要貿然的花費時間研讀。Boost另外一面,比如Graph這樣的庫則是具有工業強度,結構良好,非常值得研讀的精品代碼,並且也可以放心的在產品代碼中多多利用。

參考站點:http://www.boost.org'>http://www.boost.org(國內鏡像:http://www.c'> http://www.c'>http://www.c'>http://www.c-view.org/tech/lib/boost/index.htm)

GUI

在眾多C++的庫中,GUI部分的庫算是比較繁榮,也比較引人注目的。在實際開發中,GUI庫的選擇也是非常重要的一件事情,下面我們綜述一下可選擇的GUI庫,各自的特點以及相關工具的支持。

1、 MFC

大名鼎鼎的微軟基礎類庫(Microsoft Foundation Class)。大凡學過VC++的人都應該知道這個庫。雖然從技術角度講,MFC是不大漂亮的,但是它構建於Windows API 之上,能夠使程序員的工作更容易,編程效率高,減少了大量在建立 Windows 程序時必須編寫的代碼,同時它還提供了所有一般 C++ 編程的優點,例如繼承和封裝。MFC 編寫的程序在各個版本的Windows操作系統上是可移植的,例如,在 Windows 3.1下編寫的代碼可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近發展以及官方支持上日漸勢微。

2、 QT

參考網站:http://www.trolltech.com/'>http://www.trolltech.com/

Qt 是Trolltech公司的一個多平台的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt是完全面向對象的很容易擴展,並且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成為全世界范圍內數千種成功的應用程序的基礎。Qt也是流行的Linux桌面環境KDE 的基礎,同時它還支持Windows、Macintosh、Unix/X11等多種平台。

3、WxWindows

參考網站:http://www.wxwindows.org/'>http://www.wxwindows.org/

跨平台的GUI庫。因為其類層次極像MFC,所以有文章介紹從MFC到WxWindows的代碼移植以實現跨平台的功能。通過多年的開發也是一個日趨完善的 GUI庫,支持同樣不弱於前面兩個庫。並且是完全開放源代碼的。新近的C++ Builder X的GUI設計器就是基於這個庫的。

4、Fox

開放源代碼的GUI庫。作者從自己親身的開發經驗中得出了一個理想的GUI庫應該是什麼樣子的感受出發,從而開始了對這個庫的開發。有興趣的可以嘗試一下。

參考網站:http://www.fox'>http://www.fox-toolkit.org/

5、 WTL

基於ATL的一個庫。因為使用了大量ATL的輕量級手法,模板等技術,在代碼尺寸,以及速度優化方面做得非常到位。主要面向的使用群體是開發COM輕量級供網路下載的可視化控制項的開發者。

6、 GTK

參考網站:http://gtkmm.sourceforge.net/

GTK是一個大名鼎鼎的C的開源GUI庫。在Linux世界中有Gnome這樣的殺手應用。而GTK就是這個庫的C++封裝版本。

?



網路通信

ACE

參考網站:http://www.c'>http://www.c'>http://www.c'>http://www.cs.wustl.e/~schmidt/ACE.html

C+ +庫的代表,超重量級的網路通信開發框架。ACE自適配通信環境(Adaptive Communication Environment)是可以自由使用、開放源代碼的面向對象框架,在其中實現了許多用於並發通信軟體的核心模式。ACE提供了一組豐富的可復用C++ 包裝外觀(Wrapper Facade)和框架組件,可跨越多種平台完成通用的通信軟體任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分布式服務動態(重)配置、並發執行和同步,等等。

StreamMole

參考網站:http://www.omnifarious.org/StrMod/'>http://www.omnifarious.org/StrMod/

設計用於簡化編寫分布式程序的庫。嘗試著使得編寫處理非同步行為的程序更容易,而不是用同步的外殼包起非同步的本質。

SimpleSocket

參考網站:http://home.hetnet.nl/~lcbokkers/simsock.htm

這個類庫讓編寫基於socket的客戶/伺服器程序更加容易。

A Stream Socket API for C++

參考網站:http://www.pcs.cnu.e/'>http://www.pcs.cnu.e/~dgame/sockets/socketsC++/sockets.html

又一個對Socket的封裝庫。

XML

Xerces

參考網站:http://xml.apache.org/xerces-c/

Xerces-C++ 是一個非常健壯的XML解析器,它提供了驗證,以及SAX和DOM API。XML驗證在文檔類型定義(Document Type Definition,DTD)方面有很好的支持,並且在2001年12月增加了支持W3C XML Schema 的基本完整的開放標准。

XMLBooster

參考網站:http://www.xmlbooster.com/'>http://www.xmlbooster.com/

這個庫通過產生特製的parser的辦法極大的提高了XML解析的速度,並且能夠產生相應的GUI程序來修改這個parser。在DOM和SAX兩大主流XML解析辦法之外提供了另外一個可行的解決方案。

Pull Parser

參考網站:http://www.extreme.indiana.e/xgws/xsoap/xpp/'>http://www.extreme.indiana.e/xgws/xsoap/xpp/

這個庫採用pull方法的parser。在每個SAX的parser底層都有一個pull的parser,這個xpp把這層暴露出來直接給大家使用。在要充分考慮速度的時候值得嘗試。

Xalan

參考網站:http://xml.apache.org/xalan-c/

Xalan是一個用於把XML文檔轉換為HTML,純文本或者其他XML類型文檔的XSLT處理器。

CMarkup

參考網站:http://www.firstobject.com/xml.htm'>http://www.firstobject.com/xml.htm

這是一種使用EDOM的XML解析器。在很多思路上面非常靈活實用。值得大家在DOM和SAX之外尋求一點靈感。

libxml++

http://libxmlplusplus.sourceforge.net/

libxml++是對著名的libxml XML解析器的C++封裝版本

科學計算

Blitz++

參考網站:http://www.oonumerics.org/blitz/'>http://www.oonumerics.org/blitz/

Blitz++ 是一個高效率的數值計算函數庫,它的設計目的是希望建立一套既具像C++ 一樣方便,同時又比Fortran速度更快的數值計算環境。通常,用C++所寫出的數值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉這個缺點。方法是利用C++的template技術,程序執行甚至可以比Fortran更快。 Blitz++目前仍在發展中,對於常見的SVD,FFTs,QMRES等常見的線性代數方法並不提供,不過使用者可以很容易地利用Blitz++所提供的函數來構建。

POOMA

參考網站:http://www.c'>http://www.c'>http://www.c'>http://www.codesourcery.com/pooma/pooma

POOMA是一個免費的高性能的C++庫,用於處理並行式科學計算。POOMA的面向對象設計方便了快速的程序開發,對並行機器進行了優化以達到最高的效率,方便在工業和研究環境中使用。

MTL

參考網站:http://www.osl.iu.e/research/mtl/'>http://www.osl.iu.e/research/mtl/

Matrix Template Library(MTL)是一個高性能的泛型組件庫,提供了各種格式矩陣的大量線性代數方面的功能。在某些應用使用高性能編譯器的情況下,比如Intel的編譯器,從產生的匯編代碼可以看出其與手寫幾乎沒有兩樣的效能。

CGAL

參考網站:www.cgal.org

Computational Geometry Algorithms Library的目的是把在計算幾何方面的大部分重要的解決方案和方法以C++庫的形式提供給工業和學術界的用戶。

游戲開發

Audio/Video 3D C++ Programming Library

參考網站:http://www.galacticasoftware.com/procts/av/'>http://www.galacticasoftware.com/procts/av/

AV3D是一個跨平台,高性能的C++庫。主要的特性是提供3D圖形,聲效支持(SB,以及S3M),控制介面(鍵盤,滑鼠和遙感),XMS。

KlayGE

參考網站:http://home.g365.net/enginedev/

國內游戲開發高手自己用C++開發的游戲引擎。KlayGE是一個開放源代碼、跨平台的游戲引擎,並使用Python作腳本語言。KlayGE在LGPL協議下發行。感謝龔敏敏先生為中國游戲開發事業所做出的貢獻。

OGRE

參考網站:http://www.ogre3d.org'>http://www.ogre3d.org

OGRE (面向對象的圖形渲染引擎)是用C++開發的,使用靈活的面向對象3D引擎。它的目的是讓開發者能更方便和直接地開發基於3D硬體設備的應用程序或游戲。引擎中的類庫對更底層的系統庫(如:Direct3D和OpenGL)的全部使用細節進行了抽象,並提供了基於現實世界對象的介面和其它類。

線程

C++ Threads

參考網站:http://threads.sourceforge.net/

這個庫的目標是給程序員提供易於使用的類,這些類被繼承以提供在Linux環境中很難看到的大量的線程方面的功能。

ZThreads

參考網站:http://zthread.sourceforge.net/

一個先進的面向對象,跨平台的C++線程和同步庫。

序列化

s11n

參考網站:http://s11n.net/

一個基於STL的C++庫,用於序列化POD,STL容器以及用戶定義的類型。

Simple XML Persistence Library

參考網站:http://sxp.sourceforge.net/

這是一個把對象序列化為XML的輕量級的C++庫。

字元串

C++ Str Library

參考網站:http://www.utilitycode.com/str/'>http://www.utilitycode.com/str/

操作字元串和字元的庫,支持Windows和支持gcc的多種平台。提供高度優化的代碼,並且支持多線程環境和Unicode,同時還有正則表達式的支持。

Common Text Transformation Library

參考網站:http://cttl.sourceforge.net/

這是一個解析和修改STL字元串的庫。CTTL substring類可以用來比較,插入,替換以及用EBNF的語法進行解析。

GRETA

參考網站:http://research.microsoft.com/projects/greta/

這是由微軟研究院的研究人員開發的處理正則表達式的庫。在小型匹配的情況下有非常優秀的表現。

綜合

P::Classes

參考網站:http://pclasses.com/

一個高度可移植的C++應用程序框架。當前關注類型和線程安全的signal/slot機制,i/o系統包括基於插件的網路協議透明的i/o架構,基於插件的應用程序消息日誌框架,訪問sql資料庫的類等等。

ACDK - Artefaktur Component Development Kit

參考網站:http://acdk.sourceforge.net/

這是一個平台無關的C++組件框架,類似於java或者.NET中的框架(反射機制,線程,Unicode,廢料收集,I/O,網路,實用工具,XML,等等),以及對Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。

dlib C++ library

參考網站:http://www.c'>http://www.c'>http://www.c'>http://www.cis.ohio-state.e/~kingd/dlib/

各種各樣的類的一個綜合。大整數,Socket,線程,GUI,容器類,以及瀏覽目錄的API等等。

Chilkat C++ Libraries

參考網站:http://www.c'>http://www.c'>http://www.c'>http://www.chilkatsoft.com/cpp_libraries.asp

這是提供zip,e-mail,編碼,S/MIME,XML等方面的庫。

C++ Portable Types Library (PTypes)

參考網站:http://www.melikyan.com/ptypes/'>http://www.melikyan.com/ptypes/

這是STL的比較簡單的替代品,以及可移植的多線程和網路庫。

LFC

參考網站:http://lfc.sourceforge.net/

哦,這又是一個嘗試提供一切的C++庫

其他庫

Loki

參考網站:http://www.moderncppdesign.com/'>http: //www.moderncppdesign.com/'>http://www.moderncppdesign.com/'>http://www.moderncppdesign.com/

哦,你可能抱怨我早該和Boost一起介紹它,一個實驗性質的庫。作者在loki中把C++模板的功能發揮到了極致。並且嘗試把類似設計模式這樣思想層面的東西通過庫來提供。同時還提供了智能指針這樣比較實用的功能。

ATL

ATL(Active Template Library)是一組小巧、高效、靈活的類,這些類為創建可互操作的COM組件提供了基本的設施。

FC++: The Functional C++ Library

這個庫提供了一些函數式語言中才有的要素。屬於用庫來擴充語言的一個代表作。如果想要在OOP之外尋找另一分的樂趣,可以去看看函數式程序設計的世界。大師 Peter Norvig在 "Teach Yourself Programming in Ten Years"一文中就將函數式語言列為至少應當學習的6類編程語言之一。

FACT!

參考網站:http://www.kfa'>http://www.kfa-juelich.de/zam/FACT/start/index.html

另外一個實現函數式語言特性的庫

Crypto++

提供處理密碼,消息驗證,單向hash,公匙加密系統等功能的免費庫。

還有很多非常激動人心或者是極其實用的C++庫,限於我們的水平以及文章的篇幅不能包括進來。在對於這些已經包含近來的庫的介紹中,由於並不是每一個我們都使用過,所以難免有偏頗之處,請讀者見諒。

資源網站

正如我們可以通過計算機歷史上的重要人物了解計算機史的發展,C++相關人物的網站也可以使我們得到最有價值的參考與借鑒,下面的人物我們認為沒有介紹的必要,只因下面的人物在C++領域的地位眾所周知,我們只將相關的資源進行羅列以供讀者學習,他們有的工作於貝爾實驗室,有的工作於知名編譯器廠商,有的在不斷推進語言的標准化,有的為讀者撰寫了多部千古奇作......

Bjarne Stroustrup http://www.research.att.com/'>http://www.research.att.com/~bs/

Stanley B. Lippman

http: //blogs.msdn.com/slippman/(中文版http://www.zengyihome.net'>http: //www.zengyihome.net/slippman/index.htm'>http://www.zengyihome.net'>http://www.zengyihome.net/slippman/index.htm)

Scott Meyers http://www.aristeia.com/'>http://www.aristeia.com/

David Musser http://www.c'>http://www.c'>http://www.c'>http://www.cs.rpi.e/~musser/

Bruce Eckel http://www.bruceeckel.com'>http://www.bruceeckel.com

Nicolai M. Josuttis http://www.josuttis.com/'>http://www.josuttis.com/

Herb Sutter http://www.gotw.ca/'>http://www.gotw.ca/

Andrei Alexandrescu http://www.moderncppdesign.com/'>http://www.moderncppdesign.com/'>http://www.moderncppdesign.com/'>http://www.moderncppdesign.com/

④ 在VS2010或VC6.0中,如何安裝Zthread多線程庫

一、在Windows下使用ZThread
首先,下載ZThread,解壓到某個目錄下,我解壓到D:\libs\ZThread-2.3.2\中。
方法1:包含源文件直接編譯(不推薦)
1.在vs2010中,新建一個新的win32 控制台項目,選擇空項目。
2.在源目錄下新建一個main.cpp文件,在http://zthread.sourceforge.net/html/classZThread_1_1Thread.html 中復制一段示例代碼拷貝到main.cpp中。
3.在項目的配置屬性中,VC++目錄的包含目錄中增加ZThread的頭文件目錄,我這里是:D:\libs\ZThread-2.3.2\include。配置屬性分DEBUG和RELEASE兩個,默認選擇的是DEBUG配置,但最好兩個都配置一下,否則生成RELEASE版本時會報錯
4.在項目中新建一個文件夾,名字隨意,我的叫ZThread,然後選擇這個文件夾,右鍵選擇添加->現有項,將ZThread解壓目錄中的src目錄的所有cxx文件都加入到這個目錄中
然後現在可以編譯了,正常來說,應該編譯通過並且成功啟動程序了。
但也有可能出現一些錯誤:
錯誤一:error C2664: 「GetMoleHandleW」: 不能將參數 1 從「const char [13]」轉換為「LPCWSTR」
這個是由於vs2010的項目設置默認採用了unicode字元集導致的,可以在項目屬性中將字元集改為多位元組即可,也可以在GetMoleHandle函數的字元串參數加上_T()包含,改為GetMoleHandle(_T("Kernel32.dll"));

方法2:編譯成靜態庫
1.在vs2010中,新建一個新的win32 控制台項目,我取名為ZThread.,項目類型選擇為靜態庫。
2.在項目的配置屬性中,VC++目錄的包含目錄中增加ZThread的頭文件目錄,我這里是:D:\libs\ZThread-2.3.2\include。配置屬性分DEBUG和RELEASE兩個,默認選擇的是DEBUG配置,但最好兩個都配置一下,否則生成RELEASE版本時會報錯
3.在項目源目錄中,右鍵選擇添加->現有項,將ZThread解壓目錄中的src目錄的所有cxx文件都加入到這個目錄中
然後現在可以編譯了,正常來說,應該編譯通過並且成功生成了ZThread.lib靜態庫。
但也有可能出現一些錯誤:
錯誤一:error C2664: 「GetMoleHandleW」: 不能將參數 1 從「const char [13]」轉換為「LPCWSTR」
這個是由於vs2010的項目設置默認採用了unicode字元集導致的,可以在項目屬性中將字元集改為多位元組即可,也可以在GetMoleHandle函數的字元串參數加上_T()包含,改為GetMoleHandle(_T("Kernel32.dll"));
靜態庫的使用方法是:
在我們的程序的工程屬性的VC++目錄的包含目錄中,增加ZThread的頭文件目錄。
在程序代碼中,增加#pragma comment(lib, 「ZThread.lib」)聲明,同時,需要將ZThread.lib文件放在我們的源目錄下,跟代碼放一起。

方法3,編譯成動態庫DLL
跟方法2差不多,只不過項目類型選擇為動態庫。其他步驟一樣,不再詳述,編譯成功後,會生成ZThread.lib, ZThread.dll。
使用動態庫的方法跟靜態庫一致,不同的是,使用動態庫的程序在運行時需要ZThread.dll文件。
至此,靜態鏈接庫和動態鏈接庫我們就說完了,我們做一下對比和補充:
兩個lib文件的不同
我們發現,無論是靜態鏈接庫還是動態鏈接庫,最後都有lib文件,那麼兩者區別是什麼呢?其實,兩個是完全不一樣的東西。兩個ZThread.lib大小都不同,靜態庫對應的lib文件叫靜態庫,動態庫對應的lib文件叫導入庫。實際上靜態庫本身就包含了實際執行代碼、符號表等等,而對於導入庫而言,其實際的執行代碼位於動態庫中,導入庫只包含了地址符號表等,確保程序找到對應函數的一些基本地址信息。
對於靜態鏈接庫,我們在編譯和鏈接的時候已經將所有的代碼都導入進來,因此,當生成可執行文件以後,可執行文件包含所有的代碼。因此,在可執行文件運行時就不再需要靜態庫了,這也是為什麼我們刪掉ZThread.lib程序照樣執行;而對於動態鏈接庫,實際上,可執行文件不包含DLL中的內容,只是通過導入庫(.lib)知道了相應的地址信息,因此,可執行文件在運行時動態得去載入DLL,這也是為什麼我們刪掉ZThread.dll後程序就不能執行了。
對於DLL,我們是可以不要lib文件的。如果不要lib文件,我們可以通過函數指針的使用達到我們的目的。

⑤ 不用微軟的VC,VS如何編譯控制台的C++程序

換DEV-C++ 就可以 基本和VC一樣。就是少了VC的那些界面庫而已, 不過你的 #include "zthread/ThreadedExecutor.h" #include "zthread/Runnable.h"不是系統默認頭文件啊,需要你在編譯時放到指定的路徑下,才能編譯,我想你用VC6 也要這樣放吧。

⑥ C++中有什麼好用的http協議解析庫

C++在逗商業應用地方面,曾經是天下第一的開發語言,但這一桂冠已經被java搶走多年。因為當今商業應用程序類型,已經從桌面應用迅速轉移成Web應用。當Java橫行天下之後,MS又突然發力,搞出C#語言,有大片的曾經的C++程序員,以為C++要就此沉淪,未料,這三年來,C++的生命力突然被嚴重地增強了。主力原因就是開源的軟體、基礎軟體(比如並發原生支持,比如Android必定要推出原生的SDK)、各種跨平台應用的出現。

開源C++庫必須具有以下特點:必須是成熟的產品、跨平台的產品、相對通用的庫。

一、通用標准類
STL:C++標准模板庫,呵呵,它也是開源的嘛。
boost:C++准標准庫,它是強大地,江湖稱之逗千錘百煉地。

deelx (輕量級的正則表達式解析類庫,國產),boost里有強大的正則表達式解析庫,但如果你只想要一個表達式解析,不想要拖上龐大的boost庫時……支持一下國貨。
iconv /iconvpp : (C形式的編碼轉換函數庫,

二、XML解析庫
C++的XML相關庫不少,但是大部分其實都是C庫,使用起來自然不那麼輕便。其中基於DOM的有TinyXml,基於SAX的當然是Xerces。前者小巧快捷,便於使用,適合做數據交換。後者則是全功能的XML解析器。
xerces-c :最強大的XML解析庫了,不是僅僅在開源庫里,你盡管把商業的算在內。當然,它的變體,被IBM拿去賣錢的那個版本,多了數百兆的東東來支持各國編碼轉換,是更強大,但我覺得有小小的,開源的iconv在前不就夠了看

xml相應的c開源庫有expat,基於SAX,應用廣泛。

xsd (XML 與 C++數據結構的綁定工具)。(商業使用要錢)
三、資料庫
mysql / mysql++: 不用介紹吧。現在Oracle手裡,但我很放心。

四、多媒體類

SDL (Simple DirectMedia Layer/多媒體直接訪問層,用於游戲編程)。
相應的c開源庫有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒體播放器 TCPMP 天下聞名的跨平台、嵌入式手持設備視頻播放器,

五、網路開發類
gSOAP SOAP協議的C++支持庫及代碼生成工具。

ACE 大型網路編程的首選庫。
除了ACE之外,還有很多系統和網路編程方面的程序庫。比如在線程庫方面,還有ZThread、boost::thread,如果放大到C/C++領域,還有APR,還有CII。在文件和目錄操作方面,boost也有相應的組件,而在網路編程方面有socket++,還有boost::asio,未來的 C++0X中幾乎肯定有一個網路編程和一個線程庫。然而目前看來,ACE仍然是進行系統和高性能網路編程的首選,其地位在一段時間內不會被撼動。它不但是一個實用的程序庫、框架集,還是一個典範的設計模式應用範例,非常值得學習。
六、GUI庫
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採用的al 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++代碼的良好目標。
十二、正則表達式:boost::regex
正則表達式是編程工作中最強有力的工具之一。C++的正則表達式支持一直以來是一個軟肋。大約在2001年左右,boost中出現了regex庫,初步解決了這個問題。但是最初的regex無論在效率上還是可靠性方面都有一些問題,後來經過一次大規模的翻修之後,達到了比較完善的程度。
其他可以選擇的替代品還有c語言的pcre庫,Qt中的QRegExp類等。
十三、配置管理:Lua
隨著軟體系統越來越復雜,對軟體的可配置型提出了越來越高的要求。傳統上只要通過命令行參數來配置的系統,現在可能需要越來越多的方式和機制。目前越來越受歡迎、並且得到越來越多證實的做法,是將Lua嵌入到C/C++程序中,而用Lua程序作為配置腳本。這種做法的優勢是,Lua語言強大靈活,可以適應復雜的配置要求。同時,Lua便於嵌入C/C++程序,而且編譯執行速度非常快,可以說是目前解決C/C++程序配置管理問題的一個出色方案。

⑦ c++類庫是指什麼

C++類庫是別人做好的類,連同C++編譯系統賣給用戶的。頭文件包括了相應的類後,可以直接使用。

⑧ 編譯有線程的C++程序報錯

你這個是在linux下運行的吧。先去根目錄看看有沒有out文件,有的話說明編譯沒有問題,
出問題的話,可以使用 gdb看看

⑨ Java語言的一個重要特性就是在語言級支持多線程的程序設計,請問這和c++有何不一樣啊

c++要實現多線程的話,必須通過操作系統的支持,調用相應的操作系統的API實現多線程處理;

java有所不同,我們知道,java首先會編譯成位元組碼,然後由JVM去解釋執行這個位元組碼,所以,你用java寫出什麼樣的代碼都可以,因為它並不會立即執行。

⑩ 如何編譯和使用開源庫cryptLib,有人用過這

c++軟體開發第三方庫大全

1.boost
2.pthread windows下的posix線程實現
3.libcurl 開源網路爬蟲庫 阿里旺旺中使用到了
4.libeay32 OpenSSL Library
5.libtidy 解析htm的庫
6.zlib
7.freetype c介面的type2字體處理庫
8.libmad 編解碼mp3的庫
9.libogg,編解碼ogg音頻格式的庫
10.libsnd 開源的編解碼十多種音頻格式的庫
11.ffmpeg 音頻視頻處理的庫
12.Freeimage,Cximage,Devil 這3個都是用來處理圖形的庫
13.libpng,libjpeg,....基本同上
14.angelscript 類似lua的腳本引擎 其腳本風格類似於標准c語言
15.flac/flac++編解碼flac音頻格式的庫
16.tinyxml,rapidxml,libxml 關於xml解析方面的
17.luaplus,luabind涉及綁定lua和c++的庫
18.ode,bullet 開源的物理引擎庫
19.timidity可以把mid音頻格式轉化為wav格式的庫
20.vlc類似ffmeg的庫
21.zthread類型boost-thread,pthread的c++風格的多線程庫
22.sigc++,sigslot信號插槽庫 類型的有boost中的signal
23.SDL 簡單的音頻視頻庫
24.hge簡單的使用ddraw的2維游戲小引擎
25.opencv開源的處理圖形的庫
26.mygui,cegui 游戲上使用的GUI系統
27.鬼火游戲引擎,Orge,都是開源的游戲中間件
28.Wxwidget開源的跨平台,類似MFC
29.QT ..
30.loki實驗性質的c++庫
31.ace網路通信庫
32.fmod游戲音效引擎
33.sqlite 開源的桌面資料庫

熱點內容
如何設置強緩存的失效時間 發布:2025-05-19 15:21:28 瀏覽:693
winxp無法訪問 發布:2025-05-19 15:19:48 瀏覽:945
文件預編譯 發布:2025-05-19 15:14:04 瀏覽:641
怎麼在伺服器上掛公網 發布:2025-05-19 15:14:02 瀏覽:270
濟南平安e通如何找回密碼 發布:2025-05-19 14:56:58 瀏覽:175
安卓手機如何找到iccid碼 發布:2025-05-19 14:46:51 瀏覽:226
編譯的內核為什麼那麼大 發布:2025-05-19 14:45:21 瀏覽:178
什麼控制壓縮 發布:2025-05-19 14:28:13 瀏覽:930
網路伺服器忙指什麼 發布:2025-05-19 14:28:10 瀏覽:188
伺服器有外網ip 發布:2025-05-19 14:02:02 瀏覽:833