Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=
l典的C++?br>
STLport-------SGI STL库的跨^台可UL版本Q在以前有些~译器离W合
标准比较q的情况?
那时q是有用的,当然目前vc71已经比较接近标准了,
故目前不怎么用它了?br> Boost---------准标准库Q?功能强大
涉及(qing)能想的到的大部分非特别领域的法Q?br> 有一个大的C++C支持
WxWindows-----功能强大的跨q_GUI?nbsp;
Q它的功能和l构都类?MFCQ故原则?br> 可以通过WxWindows把现有MFCE序UL到非Winq_?br>
Blitz---------高效率的数D函数库 ,你可以订制补充你需要的法
Log4cpp-------日志处理
Q功能类似java中的log4j
ACE-----------自适应通讯环境Q?重量U的通讯环境库?br> Crypto++
-----?解密法? 非常专业的C++ 密码学函式库
CppUnit --- 一个c++的单元测试框?nbsp; cM java 的JUnit
Loki ------- 一个实验性质的库Q尝试把cM设计模式q样思想层面的东襉K过
库来提供,他是C++的一个模板库,pC++"贉|"Q?它把C++模板的功能发挥到了极?br>
学术性的C++?
FC++
--------The Functional C++ Library ,用库来扩充语a的一个代表作 ,模板?br> CGAL -------
Computational Geometry Algorithms Library计算几何斚w的大部分重要?br>
解决Ҏ(gu)和方法以C++库的形式提供l工业和学术界的用户?br>
其它目前我感觉还不是很爽的C++库:(x)
Doxygen
----注释文档生成工具 ,可恨的是 我找不到 windows版本
QT
----------大名剙的一个多q_的C++囑Ş用户界面应用E序框架QGUI库)
可气的是他的 Windows?
是商业发布的要付?br> xml4c--------IBM开发的XML ParserQ系重量的, 适用大型应用中, 其DLL?12MQ恐怖吧
Xerces c++ --Apache的XML目Q??只支持少数的字符~码Q如ASCIIQUTF-8QUTF-16{,
不能处理包含中文字符的XML文档
XMLBooster ----- 也是一U?nbsp; XML?解析工具
Fox
-------又一U开放源代码QC++Q的GUI库,功能不是很强
C++开发环?Winq_下除?Visual C++ ?
Borland C++以外?Q?br> Cygwin --------Windows下的一个Unix仿真环境
MinGW
--------GCC的一个WindowsUL版本
Dev C++ -------- 一个C/C++
的集成开发环境,在Windows上的C++~译器一直和标准有着一
D距ȝ时候,GCC是一个让Windows下开发者流口水的编译器?br> Eclipse-CDT ----IMB
开发的一个集成开发环境,一般用来作为Java 开发环境,但由?br> Eclipse 是通过插g体系来扩展功能,q里我们 安装
CDT插g后,可以用来作?br> C++
的集成开发环?br>
-----------------------------------------------------------------------------------------
l典的C++?br>-----------------------------------------------------------------------------------------
以下?
vc71环境 ZQ其他环?见各软g包的说明文档?br>
1. STLport (SGI STL库的跨^台可UL版本?
-------http://www.stlport.org
vc71环境中编译安?br>版本QSTLport-4.6.2.tar.gz
copy
vc71.mak makefile
nmake clean all
头文件在
%STLport_root%/include\stlport
库文件在 %STLport_root%/lib
头文件添加方法如Q?br>Qi
nclude 需要链接lib?br>
2 WxWindows (跨^台的GUI?
--------http://www.wxwindows.org
--------http://sourceforge.net/projects/wxwindows
--------http://i18n.linux.net.cn/others/wxWindowstut/wxTutorial.html
因ؓ(f)其类层次极像MFCQ所以有文章介绍从MFC到WxWindows的代码移植以实现跨^台的功能?br>通过多年的开发也是一个日完善的GUI库,支持同样不弱于前面两个库。ƈ且是完全开放源代码的。新q?br>的C++
Builder X的GUI设计器就是基于这个库的?br>
vc71环境中编译安?br>
版本QwxMSW-2.6.0-Setup.exe
copy makefile.vc makefile
通过 配置 config.vc ?
SHARED = 0 ?BUILD = debug
定 nmake clean all 的四U编译结果:(x)
include头文Ӟ(x)
include\wx
Lib库文? lib\vc_dll ?lib\vc_lib
DLL: lib\vc_dll
头文件在
%wxWidgets_root%/include\wx
库文件在 %wxWidgets_root%/lib\vc_dll ?
%wxWidgets_root%/lib\vc_lib
头文件添加方法如Q?br>Qi nclude
需要链接lib?br>
3 boost (“?#8221;标准?
------http://www.boost.org/
------http://sourceforge.net/projects/boost/
Boost库是一个经q千锤百点{可UL、提供源代码的C++库,作ؓ(f)标准库的后备Q是C++标准化进E?br>的发动机之一?
Boost库由C++标准委员?x)库工作l成员发P在C++C中媄响甚大,其成员已q?000?br>?
Boost库ؓ(f)我们带来了最新、最酗最实用的技术,是不折不扣的“?#8221;标准库?br>
vc71环境中编译安?br>
版本Qboost_1_32_0.exe
首先q入 tools\build\jam_src q行 build.bat 得到一个工P(x)
bjam.exe
其复制?boost_root 目录?br>执行 bjam "-sTOOLS=vc-7_1" stage 开始编?nbsp; Qbjam
"-sTOOLS=vc-7_1" installQ?br>
头文件在 %boost_root%/boost
库文件在
%boost_root%/stage\lib
头文件添加方法如Q?br>Qi nclude
有时要链接lib?br>
Boost中比较有名气的有q么几个库:(x)
Regex
正则表达式库
Spirit
LL
parser
frameworkQ用C++代码直接表达EBNF
Graph
囄件和法
Lambda
在调用的地方定义短小匿名的函数对象,很实用的functional功能
concept
check
查泛型编E中的concept
Mpl
用模板实现的元编E框?br>Thread
可移植的C++多线E库
Python
把C++cd函数映射到Python之中
Pool
内存池管?br>smart_ptr
5个智能指针,学习(fn)指针必读Q一份不错的参考是来自CUJ的文章:(x)
Smart Pointers in
Boost,哦,q篇文章可以查到QCUJ是提供在U浏览的?br>
BoostM来说是实用h(hun)值很高,质量很高的库。ƈ且由于其对跨q_的强调,Ҏ(gu)准C++?br>Q是~写q_无关Q现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西,
在实际的开发中实用需要}慎。ƈ且很多Boost中的库功能堪U对语言功能的扩展,其构造用精
巧的手法Q不要N然的p旉研读。Boost另外一面,比如Graphq样的库则是h工业强度Q?br>l构良好Q非常值得研读的精品代码,q且也可以放心的在品代码中多多利用?br>
3
blitz (高效率的数D函数库)
------http://folk.uio.no/patricg/blitz/html/index.html
------http://www.oonumerics.org/blitz/
------http://sourceforge.net/projects/blitz/
Blitz++
是一个高效率的数D函数库Q它的设计目的是希望建立一套既具像C++
一h便,同时
又比Fortran速度更快的数D环境。通常Q用C++所写出的数值程序,?
Fortran?0%左右Q因
此Blitz++正是要改掉这个缺炏V方法是利用C++的template技术,E序执行甚至可以比Fortran更快?br>Blitz++目前仍在发展中,对于常见的SVDQFFTsQQMRES{常见的U性代数方法ƈ不提供,不过使用
者可以很Ҏ(gu)地利用Blitz++所提供的函数来构徏?br>
vc71环境中编译安?br>
版本Qblitz-0.8.tar.gz
?blitz-0.8/Blitz-VS.NET.zip 解压到当前目录下
打开
Blitz-Library.sln ~译卛_
头文件在 %blitz_root%/blitz
%blitz_root%/random
库文件在 %blitz_root%/lib Q静态库Q?br>
头文件添加方法如Q?br>Qi
nclude 有时要链接lib?br>Qi nclude 不需要lib?br>
4 log4cpp
(日志处理)
-------http://sourceforge.net/projects/log4cpp/
-------http://log4cpp.hora-obscura.de/index.php/Main_Page
Log4cpp ?
Log4J ?C++ UL版本Q开放源代码q且完全免费。与 Log4J 能够跨^CPLog4cpp
也致力于写出跨^台的 C++
E序。Log4cpp 主要是用?C++ E序中写 log 文gQ与此同ӞLog4cpp ?br>有很多有用的cdQ对于写跨^?C++
E序的h来说Q可以直接拿来用Q或者作己写跨^台类的参考?br> Log4cpp 中的跨^台类库有明显?Java 痕迹Q比?Class、Object
、Loader、Locale {类?Log4cpp
中的c都可以Ҏ(gu)cd new Z?instanceQ其实现的方式和 MFC 如出一辙:(x)通过
C++ 强大的宏来实现?br> Log4cpp 中的跨^台类库主要有:
信号c:(x)ConditionQbroadcastQsignalQwaitQ,CriticalSection
QlockQunlockQ,W(xu)aitAccessQ?br> EventQsetQresetQwaitQ,MutexQlockQunlockQ,
SemaphoreQwaitQtryWaitQpostQ?br>
|络c:(x)InetAddressQSocketQServerSocketQDatagramSocketQSocketInputStreamQ?br>
SocketOutputStream
日期c:(x)DateFormatQDateTimeDateFormatQSystemQcurrentTimeMillisQ?br>
文gc:(x)FileWatchdogQdoOnChangeQ?br> 内存操作c:(x)Z引用计数机制的智能指?ObjectPtrT
字符串操作类QStrictMathQStringHelperQtoUpperCaseQtoLowerCaseQtrimQequalsIgnoreCase
QendsWithQformatQ,StringTokenizer
U程c:(x)ThreadQstartQrunQjoinQ?br>
使用以上的类不用考虑 thread handle, event handle, socket handle 之类?handle
问题Q所有这些文
件已l被装了。很好用Q对不对Q?br> 不之处在于没有 GUI cRANSI C++
中对于目录等文gpȝ的处理功能较弱,q里面也没有目录处理cR?br>另外 Socket ?read(void * buf, size_t len) 不能讄
timeoutQƈ且如果读取数据个数小?len 那么
read 函数一直堵塞,不太好用Q很可惜。实际的使用上面Q可以考虑做一?Socket
子类Q重?read() 函数?br>
vc71环境中编译安?br> 版本Qlog4cpp-0.3.5rc1.tar.gz
打开 msvc6 ~译卛_
头文件在 %log4cpp_root%/include\log4cpp
库文件在
%log4cpp_root%/lib
头文件添加方法如Q?br>Qi nclude 需要链接lib?br>
5
Crypto++ ?解密法?br> ---http://sourceforge.net/projects/cryptopp/
---http://www.eskimo.com/~weidai/cryptlib.html
---http://www.cryptopp.com
提供处理密码Q消息验证,单向hashQ公匙加密系l等功能的免费库?br>Crypto++ 是一个非怸业的C++
密码学函式库Q几乎在密码学里头常见的演算法都可以在Crypto++
扑ֈ实作的函式,如:(x)block 与stream ciphersQhash
functionsQMACsQrandom number generatorsQ?br>public key
加密...{方?br>
vc71环境中编译安?br> 版本Qcryptopp521.zip
直接通过 cryptest.dsw
相关的库
头文件在 %cryptopp_root%
库文件在
%cryptopp_root%/lib
头文件添加方法如Q?br>Qi nclude <*.h>
需要链接lib?br>
6 ACE
------http://www.cs.wustl.edu/~schmidt/ACE.html
C+
+库的代表Q超重量U的|络通信开发框架。ACE自适配通信环境QAdaptive Communication
EnvironmentQ?br>是可以自׃用、开放源代码的面向对象框Ӟ在其中实C许多用于q发通信软g的核心模式。ACE提供了一l?br>丰富的可复用C++
包装外观QWrapper
FacadeQ和框架lgQ可跨越多种q_完成通用的通信软gdQ其中包括:(x)
事g多\分离和事件处理器分派、信号处理、服务初始化、进E间通信、共享内存管理、消息\由、分布式服务?br>态(重)配置、ƈ发执行和同步Q等{?br>
7.
CppUnit
-------http://sourceforge.net/projects/cppuint/
一个c++的单元测试框Ӟ可以通过z试cȝ方式Q定制具体的试Ҏ(gu)。xUnit家族的一员,
从JUnitUL而来QJUnit是Java语言的单元测试框架?br>
vc71环境中编译安?br>
版本Qcppunit-1.10.2.tar.gz
直接通过 CppUnitLibraries.dsw ~译相关的库
头文件在
%cppunit_root%/cppunit
库文件在 %cppunit_root%/lib
头文件添加方法如Q?br>Qi nclude
需要链接lib?br>
8 Loki
-----http://moderncppdesign.com
-----http://sourceforge.net/projects/loki-lib/
-----http://sourceforge.net/projects/loki-exp/
其实可和Boost一起介l它Q一个实验性质的库。作者在loki中把C++模板的功能发
挥到了极致。ƈ且尝试把cM设计模式q样思想层面的东襉K过库来提供。同时还提供
了智能指针这h较实用的功能?br>
该库pL板库Q库本n无需~译Q在你的工程文g?引用头文件就可以使用Q?br>如果 你直接或间接使用了small objectQ那你需要在你的工程文g 加上
SmallObj.cpp
如果 你直接或间接使用了SingletonsQ那你需要在你的工程文g 加上
Singleton.cpp
-----------------------------------------------------------------------------------------
学术性的C++?
-----------------------------------------------------------------------------------------
1
FC++: The Functional C++ Library
--------http://www.cc.gatech.edu/~yannis/fc++/
q个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果想要在OOP之外L?br>一分的乐趣Q可以去看看函数式程序设计的世界。大师Peter
Norvig?“Teach Yourself Programming in
Ten
Years”一文中将函数式语a列ؓ(f)臛_应当学习(fn)?cȝE语a之一?br>
当前版本QFC++.1.5.zip
模板?在实际工E中
Q加上要用的头文?可以编译?br>
2 CGAL
-----http://www.cgal.org
Computational Geometry Algorithms
Library的目的是把在计算几何斚w的大部分重要的解x案和?br>法以C++库的形式提供l工业和学术界的用户?br>
当前版本QCGAL-3.1.zip
q是一个已~译的版本,当然也包括完整的源码
头文件在
%CGAL_root%/include/CGAL
库文件在 %CGAL_root%/lib/msvc7
头文件添加方法如Q?br>Qi
nclude
需要链接lib?br>
-----------------------------------------------------------------------------------------
其它目前我感觉还不是很爽的C++库:(x)
-----------------------------------------------------------------------------------------
1
Doxygen
------http://sourceforge.net/projects/doxygen/
------http://www.stack.nl/~dimitri/doxygen/
注释文档生成工具Q较之Doc++功能更ؓ(f)齐全Q可以生成包括HTML、PDF、RTF在内的多U格式的文档Q?br>q有GUI界面Q除了支持c/c++语言外,q支持IDL、java、PHP、c#{?br>
2?nbsp;
QT(windows版要付钱)
-------http://www.trolltech.com/
-------http://www.qiliang.net/qt.html
Qt是Trolltech公司的一个多q_的C++囑Ş用户界面应用E序框架。它提供l应用程序开发者徏立艺术的图?br>用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,q且允许真正地组件编E。自?996q早些时候,
Qtq入商业领域Q它已经成ؓ(f)全世界范围内数千U成功的应用E序的基。Qt也是行的Linux桌面环境KDE
的基Q同时它q支持Windows、Macintosh、Unix/X11{多U^台?br>
3、Fox
---------http://www.fox-toolkit.org/
开放源代码的GUI库。作者从自己亲n的开发经验中得出了一个理想的GUI库应该是什么样子的感受
出发Q从而开始了对这个库的开发。有兴趣的可以尝试一下?br>
4
xml4c
------http://www.alphaworks.ibm.com/tech/xml4c
IBM的XML
ParserQ用c++语言写就Q功能超U强大。号U支持多?00U字W编码,能够支持中文Q?br>适合于大规模的xml应用。若只是很小范围的应用,则非最佳选择Q毕竟,你需?#8220;背负”U?2M左右?br>dll的沉重负?br>
5
Xerces c++
-------http://xml.apache.org/xerces-c
Apache的XML目Q同hc++
实现Q来源于IBM的xml4cQ因此编E接口也是和xml4c一致的。但?br>目前只支持少数的字符~码Q如ASCIIQUTF-8QUTF-16{,不能处理包含中文字符的XML文档?br>
Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证Q以?qing)SAX和DOM API。XML验证在文档类型定
?Document Type
DefinitionQDTD)斚w有很好的支持Qƈ且在2001q?2月增加了支持W3C XML Schema
的基本完整的开放标准?br>
6
XMLBooster
-------http://www.xmlbooster.com/
q个库通过产生特制的parser的办法极大的提高了XML解析的速度Qƈ且能够生相应的GUIE序
来修改这个parser。在DOM和SAX两大LXML解析办法之外提供了另外一个可行的解决Ҏ(gu)?br>
-----------------------------------------------------------------------------------------
C++开发环?Winq_下除?
Visual C++ ?Borland
C++以外?Q?br>-----------------------------------------------------------------------------------------
1.
Cygwin QWindows下的一个Unix仿真环境Q?br>
q个Cygwin的一部分是GCC的另外一个WindowsUL版本QCygwin是Windows下的一个Unix仿真环境?br>严格的说是模拟GNU的环境,q也是"Gnu's
Not Unix"要表辄意思?br>
至Cygwin的網站http://www.cygwin.com/下載安裝E式setup.exeQ可直接點選埯或先行下?br>臛_h電腦後再埯?br>
目前我已l下载到本地了,直接安装卛_?br>
2. MinGW QGCC的一个WindowsUL版本Q?br>
1)http://sourceforge.net/projects/mingw 直接讉K的,点击
FilesQ然后下载以下文
Ӟ(x)MinGW-3.1.0-1.exe, mingw32-make-3.80.0-3.exe?br>安装MinGW ?
C:/MinGW 目录下,然后安装 mingw32-make ?C:/MinGW 下,通过览?br>?C:/MinGW/bin 下,?
mingw32-make.exe 改名或者另外复制ؓ(f) make.exe?br>
Q以上的讄已经_。不qؓ(f)了求斎ͼ我是同时下蝲?
gcc-core-3.4.2-20040916-1.tar.gz,
mingw-runtime-3.5.tar.gz ?
w32api-3.1.tar.gzQ将它们直接解压?C:/MinGW
下更新旧?br>文g。不q这对这文章本w没有Q何媄响。新旧两U配|我都测试过。)
安装ơ序Q?
MinGW-3.1.0-1.exe
mingw32-make-3.80.0-3.exe
gcc-core-3.4.2-20040916-1.tar.gz
mingw-runtime-3.5.tar.gz
w32api-3.1.tar.gz
gdb-5.2.1-1.exe
mingw-utils-0.3.tar.gz
binutils-2.15.91-20040904-1.tar.gz
3)准备MinGW
用户开发的命o(h)行环境(一个批处理Q?br>如:(x) mingw.bat
@rem
--------------------------------------
@SET
MINGW_ROOT=D:\Mingw
@rem
@echo Setting environment for using
Mingw.
@rem
@set PATH=%MINGW_ROOT%\BIN;%PATH%
@set
INCLUDE=%MINGW_ROOT%\INCLUDE;%MINGW_ROOT%\INCLUDE\c++\3.2.3;%MINGW_ROOT%\include\c++\3.2.3\mingw32;%MINGW_ROOT%\include\c++\3.2.3\backward;%INCLUDE%
@set
LIB=MINGW_ROOT\LIB;%LIB%
@rem
----------------------------------------
3. Dev C++ Q一个C/C++
的集成开发环境)
GCC是一个很好的~译器。在Windows上的C++~译器一直和标准有着一D距ȝ时候,GCC是一?br>让Windows下开发者流口水的编译器。Dev-C++是能够让GCC跑在Windows下的工具Q作为集成开发环
境,q提供了同专业IDE相媲的语法高亮Q代码提C,调试{功能。由于用Delphi开发,占用内存
,速度很快Q比较适合轻量U的学习(fn)和用?br>
可以使用 MinGW-GCC 作ؓ(f)它的~译?
4
Eclipse-CDT
游戏开?br>
Audio/Video 3D C++ Programming
Library
------http://www.galacticasoftware.com/products/av/
------http://sourceforge.net/projects/av3d/
***3D是一个跨q_Q高性能的C++库。主要的Ҏ(gu)是提供3D囑ŞQ声效支持(SB,以及(qing)S3MQ,控制接口Q键盘,鼠标和遥感)QXMS?br>
KlayGE
------http://home.g365.net/enginedev/
------http://sourceforge.net/projects/klayge/
国内游戏开发高手自qC++开发的一个开放源代码、跨q_的游戏引擎。KlayGE是一个开放源代码、跨q_的游戏引擎,q
用Python作脚本语a。KlayGE在LGPL协议下发行。感谢龚敏敏先生Z国游戏开发事业所做出的A(ch)献?br>
OGRE
------http://www.ogre3d.org
------http://www.ogre3d.org/docs/manual/
------http://sourceforge.net/projects/ogre
OGREQ面向对象的囑Ş渲染引擎Q是用C++开发的Q用灵zȝ面向对象3D引擎。它的目的是让开发者能更方便和直接地开?br>Z3Dg讑֤的应用程序或游戏。引擎中的类库对更底层的pȝ库(如:(x)Direct3D和OpenGLQ的全部使用l节q行了抽象,q提供了Z现实世界对象的接口和其它cR?br>

]]>