﻿<?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++博客-flyonok-文章分类-program</title><link>http://www.cppblog.com/flyonok/category/6251.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 19:36:11 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 19:36:11 GMT</pubDate><ttl>60</ttl><item><title>lippcap</title><link>http://www.cppblog.com/flyonok/articles/44568.html</link><dc:creator>flyonok</dc:creator><author>flyonok</author><pubDate>Sat, 15 Mar 2008 08:45:00 GMT</pubDate><guid>http://www.cppblog.com/flyonok/articles/44568.html</guid><wfw:comment>http://www.cppblog.com/flyonok/comments/44568.html</wfw:comment><comments>http://www.cppblog.com/flyonok/articles/44568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flyonok/comments/commentRss/44568.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyonok/services/trackbacks/44568.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->static&nbsp;intpcap_read_packet(pcap_t&nbsp;*handle,&nbsp;pcap_handler&nbsp;callback,&nbsp;u_char&nbsp...&nbsp;&nbsp;<a href='http://www.cppblog.com/flyonok/articles/44568.html'>阅读全文</a><img src ="http://www.cppblog.com/flyonok/aggbug/44568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyonok/" target="_blank">flyonok</a> 2008-03-15 16:45 <a href="http://www.cppblog.com/flyonok/articles/44568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wxWidgets &amp; Code::Blocks Studio</title><link>http://www.cppblog.com/flyonok/articles/44147.html</link><dc:creator>flyonok</dc:creator><author>flyonok</author><pubDate>Tue, 11 Mar 2008 03:25:00 GMT</pubDate><guid>http://www.cppblog.com/flyonok/articles/44147.html</guid><wfw:comment>http://www.cppblog.com/flyonok/comments/44147.html</wfw:comment><comments>http://www.cppblog.com/flyonok/articles/44147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flyonok/comments/commentRss/44147.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyonok/services/trackbacks/44147.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">近来无事想写一个小程序，又不想花太多时间在UI上；就想起了一直关注的wxWidgets(以前叫wxWindows，据说是因为微软施压才改的名)。选用他的理由有三：<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;只会C。。。<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;不想因为界面设计而花太多时间<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;wxWidgets已经有了像wxGlade这样的东东，画个简单的界面什么的足够了<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">.&nbsp;我的服务器已经都转换到了Linux；而桌面电脑随着时间的推移已经逐步的将常用的程序切换成了跨Windows</span><span style="color: #000000;">/</span><span style="color: #000000;">Linux的版本。所以学习一个跨平台的UI比较能够做到知识的保值<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">.&nbsp;wxWidgets中的wxString类提供了统一的一个字符串操作界面。一些常用的文本处理函数不用再创建了；这个我喜欢<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.&nbsp;开源、免费！&nbsp;<br><br>下一步就是选择IDE<br><br>主要焦点在MinGW&nbsp;Developer&nbsp;Studio和Code::Blocks&nbsp;Studio这两个跨平台(都使用的是wxWidgets&nbsp;UI库)的免费软件之间：<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;MinGW&nbsp;Developer&nbsp;Studio使用感觉还不错。有预编译的wxWidgets库；入门方便(编译wxWidgets库遇到的问题多多，后面慢慢讲)<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;Code::Blocks&nbsp;Studio提供插件接口而且最重要的是更新快。这方面MinGW&nbsp;Developer&nbsp;Studio就差多了，活跃的开发团队是开源项目发展的关键！&nbsp;<br><br>当然差别还有很多。我是菜菜鸟看得到的就这些。。。<br><br>安装Code::Blocks&nbsp;Studio<br><br>Code::Blocks&nbsp;Studio现在发布的是RC2(还没有正式版)。但RC2问题多多(我发现的就有对Unicode编译的支持问题)；不过有Nightly&nbsp;Builds可以解决。我的解决步骤是：<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;先下载并安装RC2整合MingW的版本，这样也就不用再去下载MingW(MingW下载包太多了，安装头痛)<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;下载Nightly&nbsp;Builds(现在登陆C::B这个论坛要注册，前几天都还可以匿名的)中的<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;Unicode&nbsp;wxWidget动态支持库(新版的C::B已经使用Unicodede发布)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;C::B的Nightly&nbsp;Builds，我下的是2006</span><span style="color: #000000;">/</span><span style="color: #000000;">1</span><span style="color: #000000;">/</span><span style="color: #000000;">20号的rev1823<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">.&nbsp;将两个包中文文件解压覆盖到C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks&nbsp;<br><br>安装wxWdigets<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;我在wxWidgets官方下载页面上下载的wxMSW&nbsp;v2.</span><span style="color: #000000;">6.2</span><span style="color: #000000;">&nbsp;的ZIP版<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;解到D:</span><span style="color: #000000;">\</span><span style="color: #000000;">(安装完成后的路径为：D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">，之后的设置都用的是这个路径)&nbsp;<br><br>编译wxWdigets(支持ODBC)<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;首先编辑D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">\</span><span style="color: #000000;">include</span><span style="color: #000000;">\</span><span style="color: #000000;">wx</span><span style="color: #000000;">\</span><span style="color: #000000;">msw</span><span style="color: #000000;">\</span><span style="color: #000000;">setup.h以便编译后的动</span><span style="color: #000000;">/</span><span style="color: #000000;">静态库文件支持ODBC(为了让编译出来的库支持ODBC，我至少编译了4次才找到原来还要在这儿修改。虽然wxWidgets的手册上写要修改setup.h不过没有具体说是那个目录下的。。。吐血)。修改内容如下：<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;将文件中的#define&nbsp;wxUSE_ODBC&nbsp;0修改为#define&nbsp;wxUSE_ODBC&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.&nbsp;然后我在D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">\</span><span style="color: #000000;">build</span><span style="color: #000000;">\</span><span style="color: #000000;">msw下创建了一个envset.bat文件来设置编译需要的环境参数。<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;内容如下<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">set</span><span style="color: #000000;">&nbsp;PATH</span><span style="color: #000000;">=</span><span style="color: #000000;">%PATH%;C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks</span><span style="color: #000000;">\</span><span style="color: #000000;">bin;C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks</span><span style="color: #000000;">\</span><span style="color: #000000;">mingw32</span><span style="color: #000000;">\</span><span style="color: #000000;">bin;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">set</span><span style="color: #000000;">&nbsp;LIBRARY_PATH</span><span style="color: #000000;">=</span><span style="color: #000000;">C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks</span><span style="color: #000000;">\</span><span style="color: #000000;">lib<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">set</span><span style="color: #000000;">&nbsp;C_INCLUDE_PATH</span><span style="color: #000000;">=</span><span style="color: #000000;">C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks</span><span style="color: #000000;">\</span><span style="color: #000000;">include<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">set</span><span style="color: #000000;">&nbsp;CPLUS_INCLUDE_PATH</span><span style="color: #000000;">=</span><span style="color: #000000;">C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks</span><span style="color: #000000;">\</span><span style="color: #000000;">include;D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">\</span><span style="color: #000000;">include;D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">\</span><span style="color: #000000;">contrib</span><span style="color: #000000;">\</span><span style="color: #000000;">include;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;其中C:</span><span style="color: #000000;">\</span><span style="color: #000000;">Program&nbsp;Files</span><span style="color: #000000;">\</span><span style="color: #000000;">CodeBlocks是我的C::B的安装路径<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">.&nbsp;同时修改D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">\</span><span style="color: #000000;">build</span><span style="color: #000000;">\</span><span style="color: #000000;">msw</span><span style="color: #000000;">\</span><span style="color: #000000;">config.gcc<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;将USE_ODBC&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;0修改为USE_ODBC&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">7</span><span style="color: #000000;">.&nbsp;进入DOS命令行<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">.&nbsp;切换工作路径至D:</span><span style="color: #000000;">\</span><span style="color: #000000;">wxWidgets</span><span style="color: #000000;">-</span><span style="color: #000000;">2.6</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">\</span><span style="color: #000000;">build</span><span style="color: #000000;">\</span><span style="color: #000000;">msw<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">9</span><span style="color: #000000;">.&nbsp;运行envset.net<br>&nbsp;&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">.&nbsp;执行清理命令<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mingw32</span><span style="color: #000000;">-</span><span style="color: #000000;">make&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">f&nbsp;makefile.gcc&nbsp;USE_XRC</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;SHARED</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;MONOLITHIC</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;BUILD</span><span style="color: #000000;">=</span><span style="color: #000000;">debug&nbsp;UNICODE</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;clean<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</span><span style="color: #000000;">11</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;其中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;SHARED</span><span style="color: #000000;">=</span><span style="color: #000000;">1表示生成的动态链接库DLL，0就是静态链接库<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.&nbsp;MONOLITHIC</span><span style="color: #000000;">=</span><span style="color: #000000;">1表示生成单一的库文件，0表示生成多个按模块分割的库文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.&nbsp;BUILD</span><span style="color: #000000;">=</span><span style="color: #000000;">debug表示生成带Debug信息的版本方便调试，release是发布版<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">.&nbsp;UNICODE</span><span style="color: #000000;">=</span><span style="color: #000000;">1表示使用unicode编码<br>&nbsp;&nbsp;</span><span style="color: #000000;">12</span><span style="color: #000000;">.&nbsp;执行编译命令<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mingw32</span><span style="color: #000000;">-</span><span style="color: #000000;">make&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">f&nbsp;makefile.gcc&nbsp;USE_XRC</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;SHARED</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;MONOLITHIC</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;BUILD</span><span style="color: #000000;">=</span><span style="color: #000000;">debug&nbsp;UNICODE</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;VENDOR</span><span style="color: #000000;">=</span><span style="color: #000000;">cb<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</span><span style="color: #000000;">13</span><span style="color: #000000;">.&nbsp;看看电视，泡壶茶。编译的时间可不短;</span><span style="color: #000000;">-</span><span style="color: #000000;">)&nbsp;<br><br>整合C::B和wxWidgets<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;运行C::B。程序会提示你填写wxWidgets的安装目录<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;codeblock</span><span style="color: #000000;">-</span><span style="color: #000000;">wx</span><span style="color: #000000;">-</span><span style="color: #000000;">global</span><span style="color: #000000;">-</span><span style="color: #000000;">var</span><span style="color: #000000;">-</span><span style="color: #0000ff;">set</span><span style="color: #000000;">.png<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.&nbsp;然后使用新建向导创建一个Using&nbsp;UNICODE&nbsp;wxWidgets&nbsp;DLL的wxWidgets&nbsp;Appliction就可以开始了<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;codeblock</span><span style="color: #000000;">-</span><span style="color: #000000;">wx</span><span style="color: #000000;">-</span><span style="color: #000000;">create</span><span style="color: #000000;">-</span><span style="color: #000000;">project.png<br><br><br>有点晚了，关于C::B中的wxWidgets项目配置方面的改天再写。。。<br>&nbsp;</span></div>
<br><img src ="http://www.cppblog.com/flyonok/aggbug/44147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyonok/" target="_blank">flyonok</a> 2008-03-11 11:25 <a href="http://www.cppblog.com/flyonok/articles/44147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 库汇总(网址+简介)</title><link>http://www.cppblog.com/flyonok/articles/43866.html</link><dc:creator>flyonok</dc:creator><author>flyonok</author><pubDate>Thu, 06 Mar 2008 15:44:00 GMT</pubDate><guid>http://www.cppblog.com/flyonok/articles/43866.html</guid><wfw:comment>http://www.cppblog.com/flyonok/comments/43866.html</wfw:comment><comments>http://www.cppblog.com/flyonok/articles/43866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flyonok/comments/commentRss/43866.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyonok/services/trackbacks/43866.html</trackback:ping><description><![CDATA[<div id="fontzoom" class="content">
<p>基础类<br>1、 Dinkumware C++ Library
</p>
<p>参考站点：<a  href="http://www.dinkumware.com/"><u>http://www.dinkumware.com</u></a></p>
<p>P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr.
Dobb's程序设计杰出奖的获得者。其编写的库长期被Microsoft采用，并且最近Borland也取得了其OEM的license，在其C/C+
+的产品中采用Dinkumware的库。 </p>
<p>2、 RogueWave Standard C++ Library </p>
<p>参考站点：<a  href="http://www.roguewave.com/"><u>http://www.roguewave.com</u></a></p>
<p>这个库在Borland C++ Builder的早期版本中曾经被采用，后来被其他的库给替换了。笔者不推荐使用。 </p>
<p>3、SGI STL </p>
<p>参考站点：<a  href="http://www.roguewave.com/"><u>http://www.roguewave.com</u></a></p>
<p>SGI公司的C++标准模版库。 </p>
<p>4、STLport </p>
<p>参考站点：<a  href="http://www.stlport.org/"><u>http://www.stlport.org</u></a></p>
<p>SGI STL库的跨平台可移植版本。 </p>
<p><br>5、准标准库——Boost </p>
<p>Boost 库是一个经过千锤百炼、可移植、提供源代码的C++库，作为标准库的后备，是C++标准化进程的发动机之一。
Boost库由C++标准委员会库工作组成员发起，在C++社区中影响甚大，其成员已近2000人。
Boost库为我们带来了最新、最酷、最实用的技术，是不折不扣的"准"标准库。 </p>
<p>Boost中比较有名气的有这么几个库： </p>
<p>Regex <br>正则表达式库 </p>
<p>Spirit <br>LL parser framework，用C++代码直接表达EBNF </p>
<p>Graph <br>图组件和算法 </p>
<p>Lambda <br>在调用的地方定义短小匿名的函数对象，很实用的functional功能 </p>
<p>Concept check <br>检查泛型编程中的concept </p>
<p>MPL <br>用模板实现的元编程框架 </p>
<p>Thread <br>可移植的C++多线程库 </p>
<p>Python <br>把C++类和函数映射到Python之中 </p>
<p>Pool <br>内存池管理 </p>
<p>Smart_ptr <br>5个智能指针，学习智能指针必读，一份不错的参考是来自CUJ的文章： </p>
<p>Smart Pointers in Boost,哦，这篇文章可以查到，CUJ是提供在线浏览的。中文版见笔者在《Dr. Dobb's Journal软件研发杂志》第7辑上的译文。 </p>
<p>Boost
总体来说是实用价值很高，质量很高的库。并且由于其对跨平台的强调，对标准C++的强调，是编写平台无关，现代C++的开发者必备的工具。但是Boost
中也有很多是实验性质的东西，在实际的开发中实用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展，其构造用尽精巧的手法，不要贸然的花费时
间研读。Boost另外一面，比如Graph这样的库则是具有工业强度，结构良好，非常值得研读的精品代码，并且也可以放心的在产品代码中多多利用。 </p>
<p>参考站点：<a  href="http://www.boost.org/"><u>http://www.boost.org</u></a>（国内镜像：<a  href="http://www.c-view.org/tech/lib/boost/index.htm"><u>http://www.c-view.org/tech/lib/boost/index.htm</u></a>） </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GUI </p>
<p>在众多C++的库中，GUI部分的库算是比较繁荣，也比较引人注目的。在实际开发中，GUI库的选择也是非常重要的一件事情，下面我们综述一下可选择的GUI库，各自的特点以及相关工具的支持。 </p>
<p>1) <a  href="http://blog.csdn.net/wuhuiran" title="mfc"><u>mfc</u></a> </p>
<p>大 名鼎鼎的微软基础类库（Microsoft Foundation
Class）。大凡学过VC++的人都应该知道这个库。虽然从技术角度讲，MFC是不大漂亮的，但是它构建于Windows API
之上，能够使程序员的工作更容易,编程效率高，减少了大量在建立 Windows 程序时必须编写的代码，同时它还提供了所有一般 C++
编程的优点，例如继承和封装。MFC 编写的程序在各个版本的Windows操作系统上是可移植的，例如，在 Windows
3.1下编写的代码可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近发展以及官方支持上日渐势微。 </p>
<p>2) QT </p>
<p>参考网站：<a  href="http://www.trolltech.com/"><u>http://www.trolltech.com</u></a></p>
<p>Qt
是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面
向对象的很容易扩展，并且允许真正地组件编程。自从1996年早些时候，Qt进入商业领域，它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是
流行的Linux桌面环境KDE 的基础，同时它还支持Windows、Macintosh、Unix/X11等多种平台。 </p>
<p>3) WxWindows </p>
<p>参考网站：<a  href="http://www.wxwindows.org/"><u>http://www.wxwindows.org</u></a></p>
<p>跨
平台的GUI库。因为其类层次极像MFC，所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的功能。通过多年的开发也是一个日趋完善的
GUI库，支持同样不弱于前面两个库。并且是完全开放源代码的。新近的C++ Builder X的GUI设计器就是基于这个库的。 </p>
<p>4) Fox </p>
<p>开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发，从而开始了对这个库的开发。有兴趣的可以尝试一下。 </p>
<p>参考网站：<a  href="http://www.fox-toolkit.org/"><u>http://www.fox-toolkit.org/</u></a> </p>
<p>5)&nbsp; WTL </p>
<p>基于ATL的一个库。因为使用了大量ATL的轻量级手法，模板等技术，在代码尺寸，以及速度优化方面做得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。 </p>
<p>6)&nbsp; GTK </p>
<p>参考网站：<a  href="http://gtkmm.sourceforge.net/"><u>http://gtkmm.sourceforge.net/</u></a> </p>
<p>GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而GTK就是这个库的C++封装版本。 </p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;网络通信 </p>
<p>1) ACE </p>
<p>参考网站：<a  href="http://www.cs.wustl.edu/%7Eschmidt/ACE.html"><u>http://www.cs.wustl.edu/~schmidt/ACE.html</u></a> </p>
<p>C+ +库的代表，超重量级的网络通信开发框架。ACE自适配通信环境（Adaptive Communication
Environment）是可以自由使用、开放源代码的面向对象框架，在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++
包装外观（Wrapper
Facade）和框架组件，可跨越多种平台完成通用的通信软件任务，其中包括：事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内
存管理、消息路由、分布式服务动态（重）配置、并发执行和同步，等等。 </p>
<p>2) StreamModule </p>
<p>参考网站：<a  href="http://www.omnifarious.org/StrMod/"><u>http://www.omnifarious.org/StrMod/</u></a> </p>
<p>设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容易，而不是用同步的外壳包起异步的本质。 </p>
<p>3) SimpleSocket </p>
<p>参考网站：<a  href="http://home.hetnet.nl/%7Elcbokkers/simsock.htm"><u>http://home.hetnet.nl/~lcbokkers/simsock.htm</u></a> </p>
<p>这个类库让编写基于socket的客户/服务器程序更加容易。 </p>
<p>4) A Stream Socket API for C++ </p>
<p>参考网站：<a  href="http://www.pcs.cnu.edu/%7Edgame/sockets/socketsC++/sockets.html"><u>http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html</u></a> </p>
<p>又一个对Socket的封装库。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML </p>
<p>1) Xerces </p>
<p>参考网站：<a  href="http://xml.apache.org/xerces-c/"><u>http://xml.apache.org/xerces-c/</u></a> </p>
<p>Xerces-C++ 是一个非常健壮的XML解析器，它提供了验证，以及SAX和DOM API。XML验证在文档类型定义(Document
Type Definition，DTD)方面有很好的支持，并且在2001年12月增加了支持W3C XML Schema 的基本完整的开放标准。
</p>
<p>2) XMLBooster </p>
<p>参考网站：<a  href="http://www.xmlbooster.com/"><u>http://www.xmlbooster.com/</u></a> </p>
<p>这个库通过产生特制的parser的办法极大的提高了XML解析的速度，并且能够产生相应的GUI程序来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。 </p>
<p>3) Pull Parser </p>
<p>参考网站：<a  href="http://www.extreme.indiana.edu/xgws/xsoap/xpp/"><u>http://www.extreme.indiana.edu/xgws/xsoap/xpp/</u></a> </p>
<p>这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parser，这个xpp把这层暴露出来直接给大家使用。在要充分考虑速度的时候值得尝试。 </p>
<p>4) Xalan </p>
<p>参考网站：<a  href="http://xml.apache.org/xalan-c/"><u>http://xml.apache.org/xalan-c/</u></a> </p>
<p>Xalan是一个用于把XML文档转换为HTML，纯文本或者其他XML类型文档的XSLT处理器。 </p>
<p>5) CMarkup </p>
<p>参考网站：<a  href="http://www.firstobject.com/xml.htm%27%3Ehttp://www.firstobject.com/xml.htm"><u>http://www.firstobject.com/xml.htm'&gt;http://www.firstobject.com/xml.htm</u></a> </p>
<p>这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在DOM和SAX之外寻求一点灵感。 </p>
<p>6) libxml++ </p>
<p><a  href="http://libxmlplusplus.sourceforge.net/"><u>http://libxmlplusplus.sourceforge.net/</u></a> </p>
<p>libxml++是对著名的libxml XML解析器的C++封装版本 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;科学计算 </p>
<p>1) Blitz++ </p>
<p>参考网站：<a  href="http://www.oonumerics.org/blitz/"><u>http://www.oonumerics.org/blitz/</u></a> </p>
<p>Blitz++ 是一个高效率的数值计算函数库，它的设计目的是希望建立一套既具像C++
一样方便，同时又比Fortran速度更快的数值计算环境。通常，用C++所写出的数值程序，比
Fortran慢20%左右，因此Blitz++正是要改掉这个缺点。方法是利用C++的template技术，程序执行甚至可以比Fortran更快。
Blitz++目前仍在发展中，对于常见的SVD，FFTs，QMRES等常见的线性代数方法并不提供，不过使用者可以很容易地利用Blitz++所提供
的函数来构建。 </p>
<p>2) POOMA </p>
<p>参考网站：<a  href="http://www.codesourcery.com/pooma/pooma"><u>http://www.codesourcery.com/pooma/pooma</u></a> </p>
<p>POOMA是一个免费的高性能的C++库，用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程序开发，对并行机器进行了优化以达到最高的效率，方便在工业和研究环境中使用。 </p>
<p>3) MTL </p>
<p>参考网站：<a  href="http://www.osl.iu.edu/research/mtl/"><u>http://www.osl.iu.edu/research/mtl/</u></a> </p>
<p>Matrix Template Library(MTL)是一个高性能的泛型组件库，提供了各种格式矩阵的大量线性代数方面的功能。在某些应用使用高性能编译器的情况下，比如Intel的编译器，从产生的汇编代码可以看出其与手写几乎没有两样的效能。 </p>
<p>4) CGAL</p>
<p>参考网站：<a  href="http://www.cgal.org/"><u>www.cgal.org</u></a> </p>
<p>Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和方法以C++库的形式提供给工业和学术界的用户。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;游戏开发 </p>
<p>1) Audio/Video 3D C++ Programming Library </p>
<p>参考网站：<a  href="http://www.galacticasoftware.com/products/av/"><u>http://www.galacticasoftware.com/products/av/</u></a> </p>
<p>AV3D是一个跨平台，高性能的C++库。主要的特性是提供3D图形，声效支持（SB,以及S3M），控制接口（键盘，鼠标和遥感），XMS。 </p>
<p>2) KlayGE </p>
<p>参考网站：<a  href="http://home.g365.net/enginedev/"><u>http://home.g365.net/enginedev/</u></a> </p>
<p>国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎，并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。 </p>
<p>3) OGRE </p>
<p>参考网站：<a  href="http://www.ogre3d.org/"><u>http://www.ogre3d.org</u></a> </p>
<p>OGRE
（面向对象的图形渲染引擎）是用C++开发的，使用灵活的面向对象3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。
引擎中的类库对更底层的系统库（如：Direct3D和OpenGL）的全部使用细节进行了抽象，并提供了基于现实世界对象的接口和其它类。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;线程 </p>
<p>1) C++ Threads </p>
<p>参考网站：<a  href="http://threads.sourceforge.net/"><u>http://threads.sourceforge.net/</u></a> </p>
<p>这个库的目标是给程序员提供易于使用的类，这些类被继承以提供在Linux环境中很难看到的大量的线程方面的功能。 </p>
<p>2) ZThreads</p>
<p>参考网站：<a  href="http://zthread.sourceforge.net/"><u>http://zthread.sourceforge.net/</u></a> </p>
<p>一个先进的面向对象，跨平台的C++线程和同步库。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;序列化 </p>
<p>1) s11n </p>
<p>参考网站：<a  href="http://s11n.net/"><u>http://s11n.net/</u></a> </p>
<p>一个基于STL的C++库，用于序列化POD，STL容器以及用户定义的类型。 </p>
<p>2) Simple XML Persistence Library </p>
<p>参考网站：<a  href="http://sxp.sourceforge.net/"><u>http://sxp.sourceforge.net/</u></a> </p>
<p>这是一个把对象序列化为XML的轻量级的C++库。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符串 </p>
<p>1) C++ Str Library </p>
<p>参考网站：<a  href="http://www.utilitycode.com/str/"><u>http://www.utilitycode.com/str/</u></a> </p>
<p>操作字符串和字符的库，支持Windows和支持gcc的多种平台。提供高度优化的代码，并且支持多线程环境和Unicode，同时还有正则表达式的支持。 </p>
<p>2) Common Text Transformation Library </p>
<p>参考网站：<a  href="http://cttl.sourceforge.net/"><u>http://cttl.sourceforge.net/</u></a> </p>
<p>这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较，插入，替换以及用EBNF的语法进行解析。 </p>
<p>3) GRETA </p>
<p>参考网站：<a  href="http://research.microsoft.com/projects/greta/"><u>http://research.microsoft.com/projects/greta/</u></a> </p>
<p>这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况下有非常优秀的表现。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;综合 </p>
<p>1) P::Classes </p>
<p>参考网站：<a  href="http://pclasses.com/"><u>http://pclasses.com/</u></a> </p>
<p>一个高度可移植的C++应用程序框架。当前关注类型和线程安全的signal/slot机制，i/o系统包括基于插件的网络协议透明的i/o架构，基于插件的应用程序消息日志框架，访问sql数据库的类等等。 </p>
<p>2) ACDK - Artefaktur Component Development Kit </p>
<p>参考网站：<a  href="http://acdk.sourceforge.net/"><u>http://acdk.sourceforge.net/</u></a> </p>
<p>这是一个平台无关的C++组件框架，类似于Java或者.NET中的框架（反射机制，线程，Unicode，废料收集，I/O，网络，实用工具，XML，等等），以及对Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。 </p>
<p>3) dlib C++ library </p>
<p>参考网站：<a  href="http://www.cis.ohio-state.edu/%7Ekingd/dlib/"><u>http://www.cis.ohio-state.edu/~kingd/dlib/</u></a> </p>
<p>各种各样的类的一个综合。大整数，Socket，线程，GUI，容器类,以及浏览目录的API等等。 </p>
<p>4) Chilkat C++ Libraries </p>
<p>参考网站：<a  href="http://www.c%27%3ehttp//www.c%27%3Ehttp://www.c%27%3Ehttp://www.chilkatsoft.com/cpp_libraries.asp"><u>http://www.c'&gt;http://www.c'&gt;http://www.c'&gt;http://www.chilkatsoft.com/cpp_libraries.asp</u></a> </p>
<p>这是提供zip，e-mail，编码，S/MIME，XML等方面的库。 </p>
<p>5) C++ Portable Types Library (PTypes) </p>
<p>参考网站：<a  href="http://www.melikyan.com/ptypes/%27%3Ehttp://www.melikyan.com/ptypes/"><u>http://www.melikyan.com/ptypes/'&gt;http://www.melikyan.com/ptypes/</u></a> </p>
<p>这是STL的比较简单的替代品，以及可移植的多线程和网络库。 </p>
<p>6) LFC </p>
<p>参考网站：<a  href="http://lfc.sourceforge.net/"><u>http://lfc.sourceforge.net/</u></a> </p>
<p>哦，这又是一个尝试提供一切的C++库 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他库 </p>
<p>1) Loki </p>
<p>参考网站：<a  href="http://www.moderncppdesign.com/"><u>http://www.moderncppdesign.com/</u></a> </p>
<p>哦，你可能抱怨我早该和Boost一起介绍它，一个实验性质的库。作者在loki中把C++模板的功能发挥到了极致。并且尝试把类似设计模式这样思想层面的东西通过库来提供。同时还提供了智能指针这样比较实用的功能。 </p>
<p>2) ATL </p>
<p>ATL(Active Template Library)是一组小巧、高效、灵活的类，这些类为创建可互操作的COM组件提供了基本的设施。 </p>
<p>3) FC++: The Functional C++ Library </p>
<p>这
个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果想要在OOP之外寻找另一分的乐趣，可以去看看函数式程序设计的世界。大师
Peter Norvig在 "Teach Yourself Programming in Ten
Years"一文中就将函数式语言列为至少应当学习的6类编程语言之一。 </p>
<p>4) FACT! </p>
<p>参考网站：<a  href="http://www.kfa-juelich.de/zam/FACT/start/index.html"><u>http://www.kfa-juelich.de/zam/FACT/start/index.html</u></a> </p>
<p>另外一个实现函数式语言特性的库 </p>
<p>5) Crypto++ </p>
<p>提供处理密码，消息验证，单向hash，公匙加密系统等功能的免费库。 </p>
<p>还有很多非常激动人心或者是极其实用的C++库，限于我们的水平以及文章的篇幅不能包括进来。在对于这些已经包含近来的库的介绍中，由于并不是每一个我们都使用过，所以难免有偏颇之处，请读者见谅。 </p>
<p><br>6) Managed C++ wrapper for ZLib</p>
<p>压缩组件Zlib的C++类库</p>
<p>7) CppSQLite - C++ Wrapper for SQLite</p>
<p>SQLite C++封装库</p>
<p>8)CxImage</p>
<p>图像格式转换</p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;资源网站 </p>
<p>正
如我们可以通过计算机历史上的重要人物了解计算机史的发展，C++相关人物的网站也可以使我们得到最有价值的参考与借鉴，下面的人物我们认为没有介绍的必
要，只因下面的人物在C++领域的地位众所周知，我们只将相关的资源进行罗列以供读者学习，他们有的工作于贝尔实验室，有的工作于知名编译器厂商，有的在
不断推进语言的标准化，有的为读者撰写了多部千古奇作...... </p>
<p>Bjarne Stroustrup <a  href="http://www.research.att.com/%7Ebs/"><u>http://www.research.att.com/~bs/</u></a> </p>
<p>Stanley B. Lippman http: //blogs.msdn.com/slippman/(中文版<a  href="http://www.zengyihome.net/slippman/index.htm"><u>http://www.zengyihome.net/slippman/index.htm</u></a>) </p>
<p>Scott Meyers <a  href="http://www.aristeia.com/"><u>http://www.aristeia.com/</u></a> </p>
<p>David Musser <a  href="http://www.cs.rpi.edu/%7Emusser/"><u>http://www.cs.rpi.edu/~musser/</u></a> </p>
<p>Bruce Eckel <a  href="http://www.bruceeckel.com/"><u>http://www.bruceeckel.com</u></a> </p>
<p>Nicolai M. Josuttis <a  href="http://www.josuttis.com/"><u>http://www.josuttis.com/</u></a> </p>
<p>Herb Sutter <a  href="http://www.gotw.ca/"><u>http://www.gotw.ca/</u></a> </p>
Andrei Alexandrescu <a  href="http://www.moderncppdesign.com/"><u>http://www.moderncppdesign.com/</u></a>
</div><img src ="http://www.cppblog.com/flyonok/aggbug/43866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyonok/" target="_blank">flyonok</a> 2008-03-06 23:44 <a href="http://www.cppblog.com/flyonok/articles/43866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>