﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-永远的cpp-文章分类-c/c++</title><link>http://www.cppblog.com/VinsonEx/category/10747.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 10 Mar 2011 20:59:29 GMT</lastBuildDate><pubDate>Thu, 10 Mar 2011 20:59:29 GMT</pubDate><ttl>60</ttl><item><title>C++ 一些知名的库(转)</title><link>http://www.cppblog.com/VinsonEx/articles/141047.html</link><dc:creator>VinsonEx</dc:creator><author>VinsonEx</author><pubDate>Thu, 03 Mar 2011 04:12:00 GMT</pubDate><guid>http://www.cppblog.com/VinsonEx/articles/141047.html</guid><wfw:comment>http://www.cppblog.com/VinsonEx/comments/141047.html</wfw:comment><comments>http://www.cppblog.com/VinsonEx/articles/141047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/VinsonEx/comments/commentRss/141047.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/VinsonEx/services/trackbacks/141047.html</trackback:ping><description><![CDATA[<br>在C++中，库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中，C++的库门类繁多，解决的问题也是极其广泛，库从轻量级到重量级的都有。不少都是让人眼界大开，亦或是望而生叹的思维杰作。由于库的数量非常庞大，而且限于笔者水平，其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。<br><br>一、C++标准库<br><br>&nbsp;&nbsp;&nbsp;已被实践证明为有工业级别强度的佳作。<br>1、Dinkumware C++ Library 参考站点：<a href="http://www.dinkumware.com/">http://www.dinkumware.com/</a><br>P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编写的库长期被Microsoft采用，并且最近Borland也取得了其OEM的license，在其 C/C++的产品中采用Dinkumware的库。<br><br>2、RogueWave Standard C++ Library 参考站点：<a href="http://www.roguewave.com/">http://www.roguewave.com/</a><br>这个库在Borland C++ Builder的早期版本中曾经被采用，后来被其他库给替换了。<br><br>3、SGI STL 参考站点：<a href="http://www.roguewave.com/">http://www.roguewave.com/</a><br>SGI公司的C++标准模版库。<br><br>4、STLport 参考站点：<a href="http://www.stlport.org/">http://www.stlport.org/</a><br>SGI STL库的跨平台可移植版本。<br><br>二、准标准库Boost<br>Boost库是一个经过千锤百炼、可移植、提供源代码的C++库，作为标准库的后备，是C++标准化进程的发动机之一。 Boost中比较有名气的有这么几个库：<br><br>Regex:正则表达式库<br><br>Spirit :LL parser framework，用C++代码直接表达EBNF<br><br>Graph :图组件和算法<br>Lambda :在调用的地方定义短小匿名的函数对象，很实用的functional功能<br><br>concept check:检查泛型编程中的concept<br><br>Mpl :用模板实现的元编程框架<br><br>Thread :可移植的C++多线程库<br><br>Python :把C++类和函数映射到Python之中<br><br>Pool :内存池管理<br><br>smart_ptr :5个智能指针，学习智能指针必读，一份不错的参考是来自CUJ的文章：<br>Smart Pointers in Boost,哦，这篇文章可以查到，CUJ是提供在线浏览的。中文版见笔者在《Dr.Dobb&#39;s Journal软件研发杂志》第7辑上的译文。<br>　　Boost总体来说是实用价值很高，质量很高的库。并且由于其对跨平台的强调，对标准C++的强调，是编写平台无关，现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西，在实际的开发中实用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展，其构造用尽精巧的手法，不要贸然的花费时间研读。Boost另外一面，比如Graph这样的库则是具有工业强度，结构良好，非常值得研读的精品代码，并且也可以放心的在产品代码中多多利用。参考站点：http://www.boost.org<br><br>三、GUI<br><br>在众多C++的库中，GUI部分的库算是比较繁荣，也比较引人注目的。<br><br>1、MFC<br>大名鼎鼎的微软基础类库。但是在最近发展以及官方支持上日渐势微。<br><br>2、QT 参考网站：<a href="http://www.trolltech.com/">http://www.trolltech.com</a><br>　　Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。自从1996年早些时候，Qt进入商业领域，它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础，同时它还支持Windows、Macintosh、Unix/X11等多种平台。[QT目前已经是Nokia旗下的产品，原官方网站已经失效]<br><br>3、WxWindows参考网站：<a href="http://www.wxwindows.org/">http://www.wxwindows.org</a><br>跨平台的GUI库。因为其类层次极像MFC.新近的C++ Builder X的GUI设计器就是基于这个库的。[wangxinus注:迫于微软的施压，已经由WxWindows更名为wxWidgets]<br><br>4、Fox参考网站：http://www.fox-toolkit.org/<br>　　开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发，从而开始了对这个库的开发。有兴趣的可以尝试一下。<br><br>5、WTL<br>主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。<br><br>6、GTK参考网站：http://gtkmm.sourceforge.net/<br>　　GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而Qt就是这个库的C++封装版本。[&#8220;Qt就是这个库的C++封装版本&#8221;是错误的。Qt早于GTK，最初Qt由于协议的原因引起社区的不满，另外开发了一个基于C语言的GTK库，后面的扩展版本为GTK＋。GTK+的Gnome和Qt的KDE是目前linux桌面的两大阵营，曾有水火不容之势。目前双方都以及开源社区的精神，已经和解。]<br><br>四、网络通信<br>１、ACE参考网站：http://www.cs.wustl.edu/~schmidt/ACE.html<br>　　C++库的代表，超重量级的网络通信开发框架。<br><br>２、StreamModule参考网站：http://www.omnifarious.org/StrMod<br>　　设计用于简化编写分布式程序的库。<br><br>３、SimpleSocket参考网站：http://home.hetnet.nl/~lcbokkers/simsock.htm<br>　　这个类库让编写基于socket的客户/服务器程序更加容易。<br>４、A Stream Socket API for C++<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;参考网站：http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html<br>　　又一个对Socket的封装库。<br><br>五、XML<br>１、Xerces参考网站：http://xml.apache.org/xerces-c/<br>　　Xerces-C++ 是一个非常健壮的XML解析器，它提供了验证，以及SAX和DOM API。２、XMLBooster参考网站：http://www.xmlbooster.com/<br>　　在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。<br><br>３、Pull Parser参考网站：http://www.extreme.indiana.edu/xgws/xsoap/xpp<br>　　这个库采用pull方法的parser。<br><br>４、Xalan参考网站：http://xml.apache.org/xalan-c/<br>　　Xalan是一个用于把XML文档转换为HTML，纯文本或者其他XML类型文档的XSLT处理器。<br><br>５、CMarkup参考网站：http://www.firstobject.com/xml.htm<br>　　这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。<br><br>６、libxml++ <a href="http://libxmlplusplus.sourceforge.net/">http://libxmlplusplus.sourceforge.net/</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libxml++是对著名的libxml XML解析器的C++封装版本。<br><br>7. TinyXML<br><br>一个非常小巧的XML解析库，基于DOM的。<br><br>六、科学计算<br><br>１、Blitz++参考网站：http://www.oonumerics.org/blitz<br>　　Blitz++ 是一个高效率的数值计算函数库，它的设计目的是希望建立一套既具像C++ 一样方便，同时又比Fortran速度更快的数值计算环境。<br><br>２、POOMA 参考网站：http://www.codesourcery.com/pooma/pooma<br><br>　　POOMA是一个免费的高性能的C++库，用于处理并行式科学计算。<br><br>３、MTL 参考网站：http://www.osl.iu.edu/research/mtl<br>　　Matrix Template Library(MTL)是一个高性能的泛型组件库，提供了各种格式矩阵的大量线性代数方面的功能。<br><br>４、CGAL 参考网站：www.cgal.org<br>　　目的是把在计算几何方面的大部分重要的解决方案和方法以C++库的形式提供给工业和学术界的用户。<br><br>七、游戏开发<br><br>１、Audio/Video 3D C++ Programming Library<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;参考网站：http://www.galacticasoftware.com/products/av/　<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AV3D是一个跨平台，高性能的C++库。主要的特性是提供3D图形，声效支持（SB,以及S3M），控制接口（键盘，鼠标和遥感），XMS。<br><br>２、KlayGE 参考网站：http://home.g365.net/enginedev/<br>　　国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎，并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。 [这个库国人了解很少，百度百科的KlayGE词条还是本人创建的。一个人开发一个游戏引擎库，是在让笔者汗颜，对作者表示钦佩！]<br><br>３、OGRE 参考网站：<a href="http://www.ogre3d.org/">http://www.ogre3d.org</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OGRE（面向对象的图形渲染引擎）是用C++开发的，使用灵活的面向对象3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库（如：Direct3D和OpenGL）的全部使用细节进行了抽象，并提供了基于现实世界对象的接口和其它类。<br><br>八、线程<br><br>１、C++ Threads参考网站：<a href="http://threads.sourceforge.net/">http://threads.sourceforge.net/</a><br>　　这个库的目标是给程序员提供易于使用的类，这些类被继承以提供在Linux环境中很难看到的大量的线程方面的功能。<br><br>２、ZThreads参考网站：http://zthread.sourceforge.net/<br>　　一个先进的面向对象，跨平台的C++线程和同步库。<br><br>九、序列化<br><br>１、s11n参考网站：http://s11n.net/<br>　　一个基于STL的C++库，用于序列化POD，STL容器以及用户定义的类型。<br><br>２、Simple XML Persistence Library参考网站：<a href="http://sxp.sourceforge.net/">http://sxp.sourceforge.net/</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是一个把对象序列化为XML的轻量级的C++库。<br><br>十、字符串<br><br>１、C++ Str Library参考网站：<a href="http://www.utilitycode.com/str/">http://www.utilitycode.com/str/</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作字符串和字符的库，支持Windows和支持gcc的多种平台。提供高度优化的代码，并且支持多线程环境和Unicode，同时还有正则表达式的支持。<br><br>２、Common Text Transformation Library参考网站：<a href="http://cttl.sourceforge.net/">http://cttl.sourceforge.net/</a><br>　　这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较，插入，替换以及用EBNF的语法进行解析。<br><br>３、GRETA参考网站：<a href="http://research.microsoft.com/projects/greta/">http://research.microsoft.com/projects/greta/</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况下有非常优秀的表现。<br><br>十一、综合<br><br>１、P::Classes参考网站：<a href="http://pclasses.com/">http://pclasses.com/</a><br>　　一个高度可移植的C++应用程序框架。<br><br>２、ACDK - Artefaktur Component Development Kit 参考网站：<a href="http://acdk.sourceforge.net/">http://acdk.sourceforge.net/</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是一个平台无关的C++组件框架，类似于Java或者.NET中的框架，以及对Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。<br><br>３、dlib C++ library 参考网站：<a href="http://www.cis.ohio-state.edu/~kingd/dlib/">http://www.cis.ohio-state.edu/~kingd/dlib/</a><br>　　各种各样的类的一个综合。大整数，Socket，线程，GUI，容器类,以及浏览目录的API等等。<br><br>４、Chilkat C++ Libraries 参考网站：http://www.chilkatsoft.com/cpp_libraries.asp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是提供zip，e-mail，编码，S/MIME，XML等方面的库。<br><br>５、C++ Portable Types Library (PTypes)参考网站：http://www.melikyan.com/ptypes/<br>　　这是STL的比较简单的替代品，以及可移植的多线程和网络库。<br><br>６、LFC 参考网站：http://lfc.sourceforge.net/<br>　　哦，这又是一个尝试提供一切的C++库<br><br>十二、其他库<br><br>１、Loki 参考网站：http://www.moderncppdesign.com/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;哦，你可能抱怨我早该和Boost一起介绍它，一个实验性质的库。作者在loki中把C++模板的功能发挥到了极致。<br><br>２、ATL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ATL是一组小巧高效灵活的类，这些类为创建COM组件提供了基本的设施。<br><br>３、FC++: The Functional C++ Library<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个库提供了一些函数式语言中才有的要素。<br><br>４、FACT! 参考网站：http://www.kfa-juelich.de/zam/FACT/start/index.html<br>　　另外一个实现函数式语言特性的库<br><br>５、Crypto++<br>
<img src ="http://www.cppblog.com/VinsonEx/aggbug/141047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/VinsonEx/" target="_blank">VinsonEx</a> 2011-03-03 12:12 <a href="http://www.cppblog.com/VinsonEx/articles/141047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STLPort的安装</title><link>http://www.cppblog.com/VinsonEx/articles/140408.html</link><dc:creator>VinsonEx</dc:creator><author>VinsonEx</author><pubDate>Mon, 21 Feb 2011 14:23:00 GMT</pubDate><guid>http://www.cppblog.com/VinsonEx/articles/140408.html</guid><wfw:comment>http://www.cppblog.com/VinsonEx/comments/140408.html</wfw:comment><comments>http://www.cppblog.com/VinsonEx/articles/140408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/VinsonEx/comments/commentRss/140408.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/VinsonEx/services/trackbacks/140408.html</trackback:ping><description><![CDATA[<br><br>想不到安装STLPort还费了一番心思，现在想想其实过程很简单<br>1、下载解压之后，直接进入解压目录运行&#8220;configure --help&#8221;<br>2、根据help的提示，便可根据当前系统安装VC版本来决定配置命令<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比如在VC2005便可以选择 msvc8，为了后续使用方便，附加静态编译，命令输入&#8220;configure msvc8 --with-static-rtl&#8221;<br>3、进入build/lib目录，执行&#8220;nmake clean install&#8221;数分钟之后，完成安装了&#8230;<br>4、在编译器中将STLPort的文件和库配置在最上面即可<br><br>这里碰上的一个问题是，大概浪费了20分钟，第3步一直提示错误['nmake' 不是内部或外部命令，也不是可运行的程序]<br>即使设置了VC的nmake环境变量也是不行，需要直接使用VS2005 IDE中的&#8220;工具&#8221;---&gt; &#8220;visual studio 2005 command prompt&#8221;<br>进入build/lib目录执行&#8220;nmake clean install&#8221;才可，直接用cmd则一直提示找不到nmake<br>
<img src ="http://www.cppblog.com/VinsonEx/aggbug/140408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/VinsonEx/" target="_blank">VinsonEx</a> 2011-02-21 22:23 <a href="http://www.cppblog.com/VinsonEx/articles/140408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>