<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_哥哥.Net</title><subtitle type="text">Analyse Ode:C/C++/C# 's Ode Is Code.</subtitle><id>http://feed.cnblogs.com/blog/u/14899/rss</id><updated>2011-12-27T05:17:08Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/14899/rss"/><entry><id>http://www.cnblogs.com/ode/archive/2011/12/27/2303410.html</id><title type="text">《一封致CSDN会员的公开道歉信》读后感</title><summary type="text">12月22日收到了一封标题为“一封致CSDN会员的公开道歉信”的邮件，非常有借鉴之处，引用一段，与君共勉。</summary><published>2011-12-27T05:16:00Z</published><updated>2011-12-27T05:16:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/12/27/2303410.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/12/27/2303410.html"/><content type="html">&lt;p&gt;12月22日收到了一封标题为&amp;#8220;一封致CSDN会员的公开道歉信&amp;#8221;的邮件，乍看之下简直不敢相信这是CSDN发来的，特意看了看发件人，确实是***@***.csdn.net，非常有借鉴之处，引用一段，与君共勉。&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;以下为引用部分：&lt;/p&gt;&#xD;
&lt;p&gt;CSDN网站早期使用过明文密码，使用明文是因为和一个第三方chat程序整合验证带来的，后来的程序员始终未对此进行处理。一直到2009年4月当时的程序员修改了密码保存方式，改成了加密密码。但部分老的明文密码未被清理，2010年8月底，对帐号数据库全部明文密码进行了清理。2011年元旦我们升级改造了CSDN帐号管理功能，使用了强加密算法，&lt;span style="color: #ff0000"&gt;帐号数据库从Windows Server上的SQL Server迁移到了Linux平台的MySQL数据库，解决了CSDN帐号的各种安全性问题。&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;以后项目出了问题，又多了一种忽悠甲方的说辞。&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/ode/aggbug/2303410.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/12/27/2303410.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/08/17/2143193.html</id><title type="text">mysql++的编译及使用mysql++连接mysql数据库</title><summary type="text">mysql++3.1.0的编译及使用mysql++连接mysql数据库.</summary><published>2011-08-17T07:32:00Z</published><updated>2011-08-17T07:32:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/08/17/2143193.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/08/17/2143193.html"/><content type="html">&#xD;
 &#xD;
&lt;p&gt;&lt;strong&gt;1、安装mysql&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载安装mysql，原来安装过mysql，后来卸载了，再次安装时，在mysql配置工具的最后一步时，总是无法启动服务，错误提示为&amp;#8220;could not start the service mysql error:0&amp;#8221;，解决方法是删除安装目录的残留文件，停止mysql服务，将C:\ProgramData中mysql的数据文件转移或删除，重启，再次安装就可以了。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2、mysql++准备知识&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这里有一些迷惑，在mySql官方网站提供了一个mysql connector/c++的API，还有一个使用很广泛的mysq++。Mysql++的官方网站中有mysql++的作者写的Mysql++和mysql connector/c++的比较，大致如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Connector/C++ 是由mysql公司开发的新的mysql c API的封装库， 相比之下，mysql++的开发历史比较悠久&amp;#8230;&amp;#8230;connector/c++是一个java风格的API，mysql++则使用原生的C++标准库，java程序员可能比较喜欢connector/c++，最后还是强调了一下mysql++是强大可靠的。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3、下载安装mysql++&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载并解压mysql++到C:/mysql++-3.1.0，下载地址：&lt;a href="http://tangentsoft.net/mysql++/"&gt;http://tangentsoft.net/mysql++/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;4、编译mysql++&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打开C:/mysql++-3.1.0下的Makefile.mingw文件（注意扩展名）。通过&amp;#8220;查找，替换&amp;#8221;方法，将所有&amp;#8220;C:\Program Files\MySQL\MySQL Server 5.1&amp;#8221; 替换为&amp;#8220;c:\Program Files\MySQL\MySQL Server 5.5&amp;#8221;，这里第40行和115行有一个换行，353行如果替换时选择了全字匹配，将有个5.1存在，总之替换完了用查找再看看哪里还有5.1字样，如果有，还需要修改为正确的路径。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 运行cmd，进入mysql的安装目录&amp;#8220;c:\Program Files\MySQL\MySQL Server 5.5\lib\opt&amp;#8220;；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 运行：dlltool -k -d C:\ mysql++-3.1.0\libmysqlclient.def -l libmysqlclient.a；执行成功后在 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\文件夹中将生成&amp;#8220;libmysqlclient.a&amp;#8221;文件；&lt;/p&gt;&lt;p&gt;同样运行：dlltool -k -d C:\ mysql++-3.1.0\libmysqlclient.def -l libmysqlclient.lib；执行成功后在 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\文件夹中将生成&amp;#8220;libmysqlclient.lib&amp;#8221;文件。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd到mysql++-3.1.0中执行：mingw32-make -f Makefile.mingw；执行后在目录中将生成很多.o和.od文件，这个不用管它，也可以删除，用命令mingw32-make -f Makefile.mingw clean可以自动清除编译过程中生成的中间文件。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但我编译到这里，折腾了5遍约8个小时，总是会有错误。Google很久没有找到答案，有可能mysql++-3.1.0不支持mysql5.5，有哪位朋友知道是什么原因还望告知。&lt;/p&gt;&lt;p&gt;一番折腾，还是没有成功。很奇怪，我有点怀疑是mysql版本的问题了。明天接着折腾。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;------------------------------郁闷的分割线----------------------&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;今天把mysql5.5.5卸载了，安装老版本mysql-essential-5.1.58-win32，一路next比较顺利。&lt;/p&gt;&lt;p&gt;在上一次折腾mysql++的第4步，当生成了libmysqlclient.a时，增加以下步骤：&lt;/p&gt;&lt;p&gt;1）将 libmysqlclient.a 拷贝至 c:\mysql++-3.1.0下；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）在c:\mysql++-3.1.0 下打开 mysql++.bkl，替换相关路径（这一步不知道有什么用，记录在这里备用一下）；&lt;/p&gt;&lt;p&gt;执行：mingw32-make -f Makefile.mingw，这里终于在mysql++的目录中生成我需要的mysqlpp.dll（3890 kb），点击install.hta文件，选择将库和include文件存放的路径，我选择了E盘。这样在E盘会有新的文件夹----mysql++，里面有两个文件夹&amp;#8220;include&amp;#8221;和&amp;#8220;lib&amp;#8221;，include文件夹里面都是头文件，lib文件夹中有libmysqlpp.a和mysqlpp.dll，可以写代码进行测试了。&lt;/p&gt;&lt;p&gt;这期间，还需要根据不同的IDE进行相关的配置，我使用的是codeblocks10.05版，在全局环境变量中，增加了mysql和mysqlpp的环境变量：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1）mysql：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base：C:\Program Files\MySQL\MySQL Server 5.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include：C:\Program Files\MySQL\MySQL Server 5.1\include&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lib：C:\Program Files\MySQL\MySQL Server 5.1\lib&lt;/p&gt;&lt;p&gt;2）mysqlpp：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base：E:\MySQL++&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include：E:\MySQL++\include&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lib：E:\MySQL++\lib&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;新建一个console，代码如下：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;iostream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cstdlib&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mysql&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.h&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;namespace&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;std;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;main()&lt;br /&gt;{&lt;br /&gt;mysqlpp::Connection&amp;nbsp;con(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con.set_option(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;mysqlpp::SetCharsetNameOption(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;gbk&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;请输入数据库(root用户)连接密码：&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;pwd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getline(cin,&amp;nbsp;pwd);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;con.connect(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mytable&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;localhost&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;root&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;pwd.c_str()))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;无法连接，请检查密码是否正确!&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;shit.终于连上了。&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::Query&amp;nbsp;query&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;con.query(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;select&amp;nbsp;mycol&amp;nbsp;from&amp;nbsp;firsttable&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(mysqlpp::StoreQueryResult&amp;nbsp;res&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;query.store())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;We&amp;nbsp;have:&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::StoreQueryResult::const_iterator&amp;nbsp;it;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(it&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;res.begin();&amp;nbsp;it&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;res.end();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;it)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::Row&amp;nbsp;row&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;it;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;row[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mycol&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;或者使用列索引&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'\t'&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;row[0]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;endl;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cerr&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Failed&amp;nbsp;to&amp;nbsp;get&amp;nbsp;mycol&amp;nbsp;list:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;query.error()&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;编译过程很顺利，不过运行时提示缺少libMYSQL.dll文件，这个文件在mysql的安装目录中（C:\Program Files\MySQL\MySQL Server 5.1\bin），拷贝一个到build文件夹，如debug或release，再运行，OK了。&lt;/p&gt;&lt;p&gt;这里还有一个小技巧，在win7中，当前文件夹使用shift+反键，在快捷菜单中点击&amp;#8220;在此处打开命令窗口&amp;#8221;即可打开命令窗口，不用在cd....的，比较方便。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;   &#xD;
 &#xD;
&lt;img src="http://www.cnblogs.com/ode/aggbug/2143193.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/17/2143193.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/08/10/2143528.html</id><title type="text">用MinGW编译boost库</title><summary type="text">下载boost 下载地址：http://www.boost.org/ 下载的版本是1.47.0。还有一个自动安装boost库的工具，可以在这里下载：http://www.boostpro.com/download/ 。准备工作 下载好boost源码后，首先运行“bootstrap.bat”，这时可以得到bjam.exe文件，bjam.exe是boost自带的工具，用来编译boost。这里有一篇文章《Mingw编译Boost库》写的非常详细：http://www.cppblog.com/xinus/archive/2011/03/01/140854.aspx 这里还有一篇：http://blog</summary><published>2011-08-10T11:58:00Z</published><updated>2011-08-10T11:58:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/08/10/2143528.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/08/10/2143528.html"/><content type="html">&lt;p&gt;&lt;strong&gt;下载boost&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下载地址：&lt;a href="http://www.boost.org/"&gt;http://www.boost.org/&lt;/a&gt;&amp;nbsp; 下载的版本是1.47.0。还有一个自动安装boost库的工具，可以在这里下载：&lt;a href="http://www.boostpro.com/download/"&gt;http://www.boostpro.com/download/&lt;/a&gt; 。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;准备工作&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下载好boost源码后，首先运行&amp;#8220;bootstrap.bat&amp;#8221;，这时可以得到bjam.exe文件，bjam.exe是boost自带的工具，用来编译boost。这里有一篇文章《Mingw编译Boost库》写的非常详细：&lt;a href="http://www.cppblog.com/xinus/archive/2011/03/01/140854.aspx"&gt;http://www.cppblog.com/xinus/archive/2011/03/01/140854.aspx&lt;/a&gt; 这里还有一篇：&lt;a href="http://blog.csdn.net/cheungmine/article/details/2586557"&gt;http://blog.csdn.net/cheungmine/article/details/2586557&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开始编译&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我要使用MinGW来编译boost。在cmd中输入gcc&amp;nbsp; &amp;#8211;v即可查看当前的MingW环境是否正确。如果输出内容最下面一行有：gcc version 4.4.1 (TDM-2 mingw32)，则可以开始下面的步骤。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 运行cmd输入 bjam --show-libraries，可以看到一个需要编译的boost模块的列表；接下来编译boost，cmd中输入 bjam&amp;nbsp; --build-type=complete toolset=gcc stage，运行命令后，会看到几个warning，如果不使用python可以不用理会，在以后的编译动作中bjam都会忽略与python相关的部分。Boost库编译时间很长，（cpu:i3 /内存:4G）从14：50分到15:41分，最后生成的stage文件夹有973M之巨。&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;编译过程虽然有点漫长，但是还算顺利。不过boost的学习过程将会很长。&lt;/p&gt;  &lt;img src="http://www.cnblogs.com/ode/aggbug/2143528.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/10/2143528.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/08/04/2152251.html</id><title type="text">用MinGW和CMake搭建便捷的C/C++开发环境（三）</title><summary type="text">经过用MinGW和CMake搭建便捷的C/C++开发环境（一）和（二）的学习，已经可以在命令行方式下进行c++的开发了，并且可以使用mysql++，wxWidgets库等等。文本编辑器我刚开始一直用喜欢的Editplus，不过有一个更适合的工具来配合CMake+MinGW，那就是Programmer&amp;#39;s Notepad（我以下简称PN），这也是sf上一个比较出名的开源软件。1、安装，此处省略记录；2、用Programmer&amp;#39;s Notepad建立工程用pnotepad建一个工程，这个工程文件没有任何的特殊功能，用记事本打开它的工程文件，只是一个很简单的xml文件，用来记录工程都</summary><published>2011-08-04T09:08:00Z</published><updated>2011-08-04T09:08:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/08/04/2152251.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/08/04/2152251.html"/><content type="html">&lt;p&gt;经过&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/01/2143541.html" target="_blank"&gt;用MinGW和CMake搭建便捷的C/C++开发环境（一）&lt;/a&gt;和&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html" target="_blank"&gt;（二）&lt;/a&gt;的学习，已经可以在命令行方式下进行c++的开发了，并且可以使用mysql++，wxWidgets库等等。文本编辑器我刚开始一直用喜欢的Editplus，不过有一个更适合的工具来配合CMake+MinGW，那就是Programmer's Notepad（我以下简称PN），这也是sf上一个比较出名的开源软件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;strong&gt;1、安装，此处省略记录；&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;strong&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
2、用Programmer's Notepad建立工程&lt;/p&gt;&#xD;
&lt;/strong&gt;&#xD;
&lt;p&gt;用pnotepad建一个工程，这个工程文件没有任何的特殊功能，用记事本打开它的工程文件，只是一个很简单的xml文件，用来记录工程都包含哪些文件而已；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3、配置&lt;br /&gt;&#xD;
&lt;/strong&gt;运行PN，tools---options----project tools中，点击右边的add按钮，添加我需要的一系列工具，以上的开发环境中，我最常用的就三个：&lt;br /&gt;&#xD;
cmake -G "MinGW Makefiles" .. &lt;br /&gt;&#xD;
mingw32-make&lt;br /&gt;&#xD;
mingw32-make clean&lt;br /&gt;&#xD;
这里只记录了cmake的配置，其他的基本相同&lt;br /&gt;&#xD;
name：cmake&lt;br /&gt;&#xD;
command：cmake&lt;br /&gt;&#xD;
folder：我的build目录的完整路径（E:\cworkspace\trunk\cmakewidgets\build）&lt;br /&gt;&#xD;
parameters：-G "MinGW Makefiles" .. &lt;br /&gt;&#xD;
shortcut：F11&lt;br /&gt;&#xD;
点击保存按钮进行保存即可。&lt;/p&gt;&#xD;
&lt;p&gt;如果想更方便，还可以设置CMake的Debug和Release模式。当然，这可以在CMakeLists.txt文件中进行定义。同样的，添加mingw32-make和mingw32-make clean命令进去。我分别设置为F9,F10,F11，这样使用起来就非常方便了。&lt;/p&gt;&#xD;
&lt;p&gt;按一下F11,就开始CMake了，在Programmer's Notepad的Output窗口中，就会有命令行窗口的输出了。截图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ode/cmake-pn.JPG" width="586" height="320" /&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="color: #ff0000;"&gt;其实这些功能Editplus都有，但Editplus的目录列表和一些界面太不好看了，所以我选用了Programmer's Notepad作为CMake+MinGW环境中首选的文本编辑器。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/ode/aggbug/2152251.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/04/2152251.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html</id><title type="text">用MinGW和CMake搭建便捷的C/C++开发环境（二）</title><summary type="text">七、CMake练习准备工作：在E盘新建一个文件夹cmakeproj，作为工程目录，在cmakeproj文件夹中，建立src文件夹，用来存放源代码；建立build文件夹，用来构建我的应用程序；在cmakeproj文件夹中，新建CMakeList.txt文件，我用工程根目录中的CMakeList.txt文件做以下几件事情：1、指定CMake的最低版本CMAKE_MINIMUM_REQUIRED(VERSION 2.8)2、设定项目名称PROJECT(CMakeProj)3、指定子目录ADD_SUBDIRECTORY(src)这里还应当了解两个重要的变量${PROJECT_SOURCE_DIR}和.</summary><published>2011-08-03T05:14:00Z</published><updated>2011-08-03T05:14:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html"/><content type="html">&#xD;
 &#xD;
&lt;p&gt;&lt;strong&gt;七、CMake练习&lt;br /&gt;&lt;/strong&gt;准备工作：在E盘新建一个文件夹cmakeproj，作为工程目录，&lt;br /&gt;在cmakeproj文件夹中，建立src文件夹，用来存放源代码；建立build文件夹，用来构建我的应用程序；&lt;br /&gt;在cmakeproj文件夹中，新建CMakeList.txt文件，我用工程根目录中的CMakeList.txt文件做以下几件事情：&lt;br /&gt;&lt;strong&gt;1、指定CMake的最低版本&lt;br /&gt;&lt;/strong&gt;CMAKE_MINIMUM_REQUIRED(VERSION 2.8)&amp;nbsp;&lt;br /&gt;&lt;strong&gt;2、设定项目名称&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;PROJECT(CMakeProj)&lt;br /&gt;&lt;strong&gt;3、指定子目录&lt;br /&gt;&lt;/strong&gt;ADD_SUBDIRECTORY(src)&lt;br /&gt;这里还应当了解两个重要的变量${PROJECT_SOURCE_DIR}和${PROJECT_BINARY_DIR}，他们分别是项目源代码目录和项目输出目录，可以用MESSAGE指令输出。&lt;br /&gt;MESSAGE(STATUS "源码目录：" ${PROJECT_SOURCE_DIR})&lt;br /&gt;MESSAGE(STATUS "编译目录：" ${PROJECT_BINARY_DIR})&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4、在src文件夹中，建立mylibs和myapps文件夹&lt;br /&gt;&lt;/strong&gt;在mylibs中，建立mylib.cpp和mylib.h文件，代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mylib.h&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;----------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#ifndef&amp;nbsp;_MYLIB_H&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#define&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;_MYLIB_H&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyLib{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;DoSomething();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endif&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;----------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mylib.cpp&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;----------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mylib.h&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;iostream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyLib::DoSomething()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;hi~!&amp;nbsp;我是一条来自MyLib中DoSomething的消息&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;std::endl;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;----------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;在mylibs文件夹中的CMakeLists.txt文件中写CMake指令：&lt;br /&gt;ADD_LIBRARY(mylibs mylib)&lt;/p&gt;&lt;p&gt;ADD_LIBRARY指令的第一个参数为库文件的名称，这里指定为mylibs，将来make之后，会生成一个名称为libmylibs.a的库文件，第二个参数为源码，可以只写文件名mylib，也可以写mylib.h空格mylib.cpp，如果头文件和源文件的名称一致简写为mylib就可以了。&lt;br /&gt;&lt;strong&gt;5、在myapps文件夹中，建立myapp.cpp文件&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;myapp.cpp&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;iostream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mylib.h&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;MyLib.DoSomething();&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;在myapps文件夹中的CMakeLists.txt文件中写CMake指令：&lt;br /&gt;告诉编译器共享库的位置：&lt;br /&gt;INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/mylibs)&lt;br /&gt;根据myapp.cpp源文件生称名称为exename的可执行文件：exename.exe&lt;br /&gt;ADD_EXECUTABLE(exename myapp.cpp)&lt;br /&gt;链接可执行文件需要的动态库文件libmylibs.a&lt;br /&gt;TARGET_LINK_LIBRARIES(exename mylibs)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6、构建&lt;br /&gt;&lt;/strong&gt;在build文件夹中：cmd：cmake &amp;#8211;G&amp;#8221;MinGW Makefiles&amp;#8221; ..&amp;nbsp; 在build文件夹中已经生成了我需要的Makefie，&lt;br /&gt;接下来cmd：mingw32-make&lt;br /&gt;在build文件夹的src文件夹中的myapps文件夹中，成功的生成了名称为exename.exe的可执行文件，在build文件夹的src文件夹中的mylibs文件夹中生成了libmylib.a文件。&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ode/00001.JPG" width="655" height="275" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八、CMake练习的深入&lt;br /&gt;&lt;/strong&gt;在上一步生成了exe文件后，还是有很多不如意的地方，例如exe文件生成的目录并不是我想要的等等等等。还需要对我的构建进行改进。&lt;br /&gt;&lt;strong&gt;1、改变目标二进制的输出目录&lt;/strong&gt;&lt;br /&gt;在工程根目录中的CMakeList.txt文件中增加指令：&lt;br /&gt;SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)&lt;br /&gt;SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)&lt;br /&gt;&lt;strong&gt;2、增加版本号&lt;/strong&gt;&lt;br /&gt;SET(${PROJECT_NAME}_MAJOR_VERSION 0)&lt;br /&gt;SET(${PROJECT_NAME}_MINOR_VERSION 1)&lt;br /&gt;SET(${PROJECT_NAME}_PATCH_LEVEL 0)&lt;br /&gt;但我设置后，在windows中并没有看到效果。去公司在linux下看看。&lt;br /&gt;&lt;strong&gt;3、生成共享库&lt;br /&gt;&lt;/strong&gt;修改src/mylibs/中的CMakeLists.txt文件&lt;br /&gt;ADD_LIBRARY(mylibs SHARED mylib)&lt;br /&gt;ADD_LIBRARY的参数形式为：ADD_LIBRARY (库名称 库类型 源文件)&lt;br /&gt;只需要增加参数SHARED就可以了，在make之后，build/lib/中可生成mylibs.dll文件。&lt;br /&gt;如果想同时生成静态库和共享库，如何实现？&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;九、使用其他库文件&lt;br /&gt;&lt;/strong&gt;建立一个目录，用来存放一些常用的库（e:/cpplibs）。&lt;br /&gt;&lt;strong&gt;（一）sqlite&lt;br /&gt;&lt;/strong&gt;从最简单的sqlite开始。在E盘建目录cpplibs，在cpplibs文件夹中建立sqlite目录，在sqlite中建立include和lib文件夹，分别存放sqlite3.h文件和libsqlite3.a文件。&lt;br /&gt;在myapps文件夹中的CMakeLists.txt文件中增加：&lt;br /&gt;INCLUDE_DIRECTORIES(d:/cpplibs/sqlite/include)&lt;br /&gt;LINK_DIRECTORIES(d:/cpplibs/sqlite/lib) &lt;br /&gt;TARGET_LINK_LIBRARIES(exename sqlite3 mylibs)&lt;br /&gt;告诉编译器到哪里去找sqlite的头文件和库，连接sqlite3的库文件。&lt;br /&gt;运行cmake和mingw32-make，sqlite3的应用程序可以正常运行了。但是在上面到处写类似d:/cpplibs/sqlite/include这样的路径，如果cpplibs名称改变了，那就太致命了。在项目根目录的CMakeLists.txt文件中定义一个变量：&lt;br /&gt;SET(SQLITE3_BASE d:/cpplibs/sqlite)&lt;br /&gt;将上面两行CMake指令修改为：&lt;br /&gt;INCLUDE_DIRECTORIES(${SQLITE3_BASE}/include)&lt;br /&gt;LINK_DIRECTORIES(${SQLITE3_BASE}/lib)&lt;br /&gt;这样看起来好多了。再次编译时，只要修改一下变量SQLITE3_BASE的值就可以了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（二）MySQL++&lt;br /&gt;&lt;/strong&gt;1、定义两个变量MYSQL_BASE和MYSQLPP_BASE，分别存放mysql和mysql++的位置，在myapps文件夹中的CMakeLists.txt文件中增加：&lt;br /&gt;SET(MYSQL_BASE "C:/Program Files/MySQL/MySQL Server 5.1") &lt;br /&gt;SET(MYSQLPP_BASE "E:/MySQL++")&lt;br /&gt;因为CMakeLists.txt的语法是以空格区分参数是否结束的，所以路径加了引号，在CMake的语法中，加不加引号其实都没有关系，但如果值中有空格或分号&amp;#8220;;&amp;#8221;，还是需要加引号。&lt;br /&gt;2、源码目录（这里是myapps）的CMakeLists.txt文件修改为：&lt;/p&gt;&lt;p&gt;#INCLUDE_DIRECTORIES&lt;br /&gt;#告诉编译器共享库的位置：&lt;br /&gt;#sqlite mysql mysql++&lt;br /&gt;INCLUDE_DIRECTORIES("${SQLITE3_BASE}/include" "${MYSQL_BASE}/include" "${MYSQLPP_BASE}/include")&lt;/p&gt;&lt;p&gt;#LINK_DIRECTORIES&lt;br /&gt;#告诉外部依赖库的搜索路径&lt;br /&gt;#sqlite mysql mysql++&lt;br /&gt;LINK_DIRECTORIES("${SQLITE3_BASE}/lib" "${MYSQLPP_BASE}/lib" "${MYSQL_BASE}/lib")&lt;/p&gt;&lt;p&gt;最后别忘了告诉编译器mysqlpp的依赖项&lt;br /&gt;TARGET_LINK_LIBRARIES(${PROJECT_NAME} "${MYSQLPP_BASE}/lib/libmysqlpp.a")&lt;/p&gt;&lt;p&gt;开始写一些代码试试看，已经可以很顺利的make了。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cstdlib&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cstdio&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;iostream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sqlite3.h&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mysql&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.h&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mylib.h&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;namespace&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;std;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;sqlite&amp;nbsp;callback&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;callback(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NotUsed,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;**&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;argv,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;**&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;azColName){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;argc;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;%s&amp;nbsp;=&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;azColName[i],&amp;nbsp;argv[i]&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;argv[i]&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;end&amp;nbsp;sqlite&amp;nbsp;callback&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;mylib&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyLib().DoSomething();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;sqlite&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sqlite3&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;zErrMsg&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;rc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;sql[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1024&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf(sql,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;table1;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rc&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;sqlite3_open(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;test.db&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(rc)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Can't&amp;nbsp;open&amp;nbsp;database:&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;sqlite3_errmsg(db));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sqlite3_close(db);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;PAUSE&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rc&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;sqlite3_exec(db,&amp;nbsp;sql,&amp;nbsp;callback,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;zErrMsg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(&amp;nbsp;rc&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQLITE_OK&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SQL&amp;nbsp;error:&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;zErrMsg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sqlite3_close(db);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;end&amp;nbsp;sqlite&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;mysql&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::Connection&amp;nbsp;con(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con.set_option(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;mysqlpp::SetCharsetNameOption(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;gbk&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;请输入数据库(root用户)连接密码：&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;pwd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getline(cin,&amp;nbsp;pwd);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;con.connect(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mytable&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;localhost&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;root&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;pwd.c_str()))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;无法连接，请检查密码是否正确!&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;shit.终于连上了。&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::Query&amp;nbsp;query&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;con.query(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;select&amp;nbsp;mycol&amp;nbsp;from&amp;nbsp;firsttable&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(mysqlpp::StoreQueryResult&amp;nbsp;res&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;query.store())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;We&amp;nbsp;have:&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::StoreQueryResult::const_iterator&amp;nbsp;it;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(it&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;res.begin();&amp;nbsp;it&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;res.end();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;it)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysqlpp::Row&amp;nbsp;row&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;it;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\t&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;row[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mycol&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;或者使用列索引&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'\t'&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;row[0]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;endl;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cerr&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Failed&amp;nbsp;to&amp;nbsp;get&amp;nbsp;mycol&amp;nbsp;list:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;query.error()&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;end&amp;nbsp;mysql&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;PAUSE&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;EXIT_SUCCESS;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;（三）wxWidgets&lt;br /&gt;&lt;/strong&gt;在myapps的CMakeLists.txt文件中:&lt;br /&gt;#wxWidgets&lt;br /&gt;#MinGW 对库的顺序是有要求的，这一点很重要&lt;br /&gt;FIND_PACKAGE(wxWidgets REQUIRED)&lt;br /&gt;INCLUDE(${wxWidgets_USE_FILE})&lt;/p&gt;&lt;p&gt;之后：&lt;br /&gt;TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${wxWidgets_LIBRARIES})&lt;/p&gt;&lt;p&gt;下面修改myapp.cpp的代码，写一个wxWidgets的hello world，wxFrame窗口已经呈现在眼前。&lt;/p&gt;&lt;p&gt;myapp.cpp的代码就是wxWidgets官方网站的helloword：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&amp;nbsp;*&amp;nbsp;hworld.cpp&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;wx/wx.h&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyApp:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxApp&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;virtual&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;OnInit();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFrame:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxFrame&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyFrame(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;title,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxPoint&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;pos,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxSize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;size);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;OnQuit(wxCommandEvent&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;event&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;OnAbout(wxCommandEvent&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;event&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DECLARE_EVENT_TABLE()&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;enum&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID_Quit&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID_About,&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;BEGIN_EVENT_TABLE(MyFrame,&amp;nbsp;wxFrame)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EVT_MENU(ID_Quit,&amp;nbsp;MyFrame::OnQuit)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EVT_MENU(ID_About,&amp;nbsp;MyFrame::OnAbout)&lt;br /&gt;END_EVENT_TABLE()&lt;br /&gt;&lt;br /&gt;IMPLEMENT_APP(MyApp)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyApp::OnInit()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyFrame&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;frame&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFrame(&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Hello&amp;nbsp;World&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;),&amp;nbsp;wxPoint(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;50&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;50&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxSize(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;450&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;340&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frame&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Show(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetTopWindow(frame);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;MyFrame::MyFrame(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;title,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxPoint&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;pos,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxSize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;size)&lt;br /&gt;:&amp;nbsp;wxFrame(&amp;nbsp;NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;title,&amp;nbsp;pos,&amp;nbsp;size&amp;nbsp;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenu&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;menuFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxMenu;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuFile&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Append(&amp;nbsp;ID_About,&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&amp;amp;About...&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuFile&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;AppendSeparator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuFile&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Append(&amp;nbsp;ID_Quit,&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;E&amp;amp;xit&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenuBar&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;menuBar&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxMenuBar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuBar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Append(&amp;nbsp;menuFile,&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&amp;amp;File&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetMenuBar(&amp;nbsp;menuBar&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreateStatusBar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetStatusText(&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Welcome&amp;nbsp;to&amp;nbsp;wxWidgets!&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFrame::OnQuit(wxCommandEvent&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;WXUNUSED(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;event&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Close(TRUE);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFrame::OnAbout(wxCommandEvent&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;WXUNUSED(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;event&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMessageBox(&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;wxWidgets&amp;nbsp;Hello&amp;nbsp;world&amp;nbsp;sample&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;About&amp;nbsp;Hello&amp;nbsp;World&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxOK&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;wxICON_INFORMATION,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;编译，运行。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;以前喜欢用vc，vs，但vs越来越庞大，每一次的安装都有如梦魇，相信很多朋友和我一样都有同样的感受。为了有一个轻便的环境，我逐渐转移到Devc++，再到CodeBlocks，但总是会遇到这样或那样的问题没有办法解决。我知道这并不是IDE的问题，而是我不知如何解决。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当然我并不是反对使用IDE，我本人也很依赖IDE。人类之所以发明工具，是因为工具可以提高生产效率。上面提到的这些IDE都是极品，尤其Visual studio，是我认为最强大的开发工具，确切的说是C#最强大的开发工具，我甚至一度认为没有其他的开发工具可以超越它，即便如此，我还是想知道在vs强大的背后到底是什么？现在我似乎知道了一些:-)。&lt;/p&gt;&lt;p&gt;学习和使用CMake，开始入手时比较困难，但我才经过总共不超过20个小时的学习，已经基本可以开始用CMake来完成大多数的日常工作了。但是还有一些迷惑，总不能不停的在命令行中敲命令吧，刚开始熟悉命令时多敲几次还过得去，命令已经非常熟悉了，而且使用频率也很高，不停的敲那也太麻烦了，在第三篇学习记录中解决这个问题，地址在这里：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/04/2152251.html"&gt;http://www.cnblogs.com/ode/archive/2011/08/04/2152251.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参考资料：&lt;br /&gt;&lt;/strong&gt;1、CMake文档&lt;br /&gt;2、CMake实践.pdf&lt;br /&gt;3、&lt;a href="http://bbs.osgchina.org/viewthread.php?tid=1189"&gt;http://bbs.osgchina.org/viewthread.php?tid=1189&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://bbs.osgchina.org/viewthread.php?tid=1229"&gt;http://bbs.osgchina.org/viewthread.php?tid=1229&lt;/a&gt; &amp;nbsp;&#xD;
&lt;/p&gt;  &#xD;
&lt;img src="http://www.cnblogs.com/ode/aggbug/2147089.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/08/01/2143541.html</id><title type="text">用MinGW和CMake搭建便捷的C/C++开发环境（一）</title><summary type="text">一、下载安装MinGW -h 或 –help 输出帮助； -v 或 –version 查看当前的版本；二、下载安装CMake 下载地址：http://www.cmake.org/ 我现在安装的是CMake2.8.5版本，如果已经安装过CMake，可以用CMake –version来查看当前的CMake版本； 输入不带任何参数的cmake命令来查看cmake的帮助；三、CMakeLists.txt文件 在源码所在文件夹建立CMakeLists.txt文件，并编辑它。在源码所在文件夹建立文件夹build，这个文件夹用来保存CMake生成的一系列文件。 在build文件夹中cmd：cmake –G”</summary><published>2011-08-01T12:13:00Z</published><updated>2011-08-01T12:13:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/08/01/2143541.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/08/01/2143541.html"/><content type="html">&#xD;
&lt;p&gt;&lt;strong&gt;一、下载安装MinGW&lt;/strong&gt; &lt;/p&gt;&#xD;
&lt;p&gt;-h 或 &amp;#8211;help 输出帮助；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -v 或 &amp;#8211;version 查看当前的版本；&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;二、下载安装CMake&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下载地址：&amp;nbsp;&lt;a href="http://www.cmake.org/" target="_blank"&gt;http://www.cmake.org/&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;我现在安装的是CMake2.8.5版本，如果已经安装过CMake，可以用CMake &amp;#8211;version来查看当前的CMake版本；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 输入不带任何参数的cmake命令来查看cmake的帮助；&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;三、CMakeLists.txt文件&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在源码所在文件夹建立CMakeLists.txt文件，并编辑它。在源码所在文件夹建立文件夹build，这个文件夹用来保存CMake生成的一系列文件。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在build文件夹中cmd：cmake &amp;#8211;G&amp;#8221;MinGW Makefiles&amp;#8221; ..&amp;nbsp; 后面两个点点代表build文件夹的上级目录。参数G须为大写。&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;四、Make&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;cmd：mingw32-make&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;五、Make之后&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在build文件夹下已经生成很多文件，里面包括我需要的exe文件及makefiles文件，这个文件暂时没有后缀名，下面需要解决这个问题，给不同的makefiles加上不同的后缀名用来区分编译器，例如如果用GCC，可以将makefiles文件自动命名为makefiles.mingw。不过这个问题到现在还没有解决，手工修改文件名也瞬间的事，先不理睬了，如果哪位朋友知晓方法，还望告知：）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;六、设置环境变量&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果使用Cmake安装版，Cmake已经将环境变量加入了，如果没有加入，在环境变量的path中加入Cmake的安装路径，MinGW也一样，不同的是MinGW需要在安装路径后面加上/bin/，否则会找不到mingw32-make.exe文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于CMakeLists文件的学习内容近两个月有空补上。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;练习已补充：&lt;/strong&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html"&gt;&lt;strong&gt;http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html"&gt;http://www.cnblogs.com/ode/archive/2011/08/03/2147089.html&lt;/a&gt;&lt;/p&gt;   &#xD;
&lt;img src="http://www.cnblogs.com/ode/aggbug/2143541.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/08/01/2143541.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/07/17/2143550.html</id><title type="text">wxWidgets学习笔记--菜单</title><summary type="text">定义wxWidgets的菜单，以及为wxWidgets菜单设置自定义的图片。</summary><published>2011-07-17T12:23:00Z</published><updated>2011-07-17T12:23:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/07/17/2143550.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/07/17/2143550.html"/><content type="html">&lt;p&gt;&lt;strong&gt;定义菜单&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、在项目中建立&amp;#8220;menu.h&amp;#8221;头文件和&amp;#8220;menu.cpp&amp;#8221;文件；&lt;/p&gt;&#xD;
&lt;p&gt;2、在menu.h头文件中定义一个wxMenuBar ,这个wxMenuBar 会在wxFrame中用到。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;wxMenuBar&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CreateMenuBar();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;3、在menu.cpp文件中实现CreateMenuBar()方法&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;wxMenuBar&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CreateMenuBar()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;1)&amp;nbsp;定义一个&amp;nbsp;wxMenuBar&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenuBar&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuBar&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;wxMenuBar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;2)&amp;nbsp;File菜单项&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenu&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuFile&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;wxMenu(wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Open&amp;nbsp;菜单项&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenuItem&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuItemOpen&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;wxMenuItem(menuFile,IDM_MENUITEM_OPEN,wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Open&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),wxEmptyString,&amp;nbsp;wxITEM_NORMAL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuFile&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Append(menuItemOpen);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;插入菜单项的分隔符&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuFile&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;AppendSeparator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;定义一个使用XPM图像资源的菜单项&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenuItem&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuItemExit&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;wxMenuItem(menuFile,IDM_MENUITEM_EXIT,wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Exit&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),wxEmptyString,&amp;nbsp;wxITEM_NORMAL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;设置XPM图片作为菜单项的图标，并追加到File菜单中&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxBitmap&amp;nbsp;exitBMP(IDM_MENUITEM_EXIT_XPM);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuItemExit&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;SetBitmap(exitBMP);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuFile&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Append(menuItemExit);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;3)将File菜单项追加到MenuBar上&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuBar&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Append(menuFile,wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;File&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Tools&amp;nbsp;菜单项&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenu&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuTools&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;wxMenu(wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMenuItem&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuItemSettings&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;wxMenuItem(menuTools,IDM_MENUITEM_SETTINGS,wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Settings&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),wxEmptyString,wxITEM_NORMAL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuTools&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Append(menuItemSettings);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuBar&lt;/span&gt;&lt;span style="color: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Append(menuTools,wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Tools&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;menuBar;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;4、在需要菜单的wxFrame中：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;设置menubar&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;SetMenuBar(CreateMenuBar());&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;在创建菜单时，如果为菜单项指定图标，一般使用XPM资源作为图标，用工具XnView可以很方便的将jpg、png等格式的图片转换为XPM格式。在include这个XPM时，需要用记事本或其他例如Editplus等看一下XPM文件头部的定义是否和这个XPM的文件名一致，如果不一致，编译器会提示找不到这个XPM文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;下面开始添加菜单的事件&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、在应用菜单的wxFrame的头文件中定义一个public的事件：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OnSettings(wxCommandEvent&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;2、在cpp文件中实现它&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MainFrm::OnSettings(wxCommandEvent&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wxMessageBox(wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;this&amp;nbsp;is&amp;nbsp;settings&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),wxT(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;3、在应用菜单的wxFrame的事件表中定义：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;EVT_MENU(IDM_MENUITEM_SETTINGS,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainFrm::OnSettings)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;到这里，这个菜单点击Tools---Settings，已经可以看到一个MessageBox了。菜单的内容不是很多，暂时到这里。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/ode/aggbug/2143550.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/07/17/2143550.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2011/06/07/c-cpp-sqlite3-vc-wxdev-codeblocks.html</id><title type="text">c/c++在vc6，vs（visual studio2010），codeblocks，wxDev c++中应用sqlite3 API笔记</title><summary type="text">C++各IDE(codeblocks，wxDev c++，vc6，vs2010)中Sqlite3开发环境的搭建</summary><published>2011-06-07T02:04:00Z</published><updated>2011-06-07T02:04:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2011/06/07/c-cpp-sqlite3-vc-wxdev-codeblocks.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2011/06/07/c-cpp-sqlite3-vc-wxdev-codeblocks.html"/><content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp; 首先在sqlite的官方网站下载sqlite的相关文件。目前较新的版本是3.7.6.3，在sqlite的源码中(sqlite-amalgamation-3070603)包含4个文件：shell.c, sqlite3.c,sqlite3.h,sqlite3ext.h。已编译好的sqlite包含2个文件：sqlite3.dll和sqlite3.def。如果只是为了使用sqlite3 API开发应用程序，我们需要用到的文件就只有sqlite3.h头文件和sqlite3.dll及sqlite3.def这三个文件。这里分别记录一下在不同的IDE中使用Sqlite3 API的方法。如果使用Codeblocks和wxDev c++作为开发工具，一般都已经具备MinGW编译环境了。&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;strong&gt;Vc6&lt;/strong&gt;&lt;br /&gt;&#xD;
有很多介绍文章是使用vc新建一个&amp;#8220;Win32 Dynamic-Link Library&amp;#8221;工程，添加sqlite3.c sqlite3.h sqlite3.def文件编译来得到sqlite3.lib文件，很显然，这个方法非常之麻烦，很简单可以解决的问题就不用兴师动众了，有兴趣可以搜索相关文章看一下。&lt;br /&gt;&#xD;
1.通过dlltool工具，生成.lib文件&#xD;
&lt;p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000;"&gt;dlltool&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;D&amp;nbsp;sqlite3.dll&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;d&amp;nbsp;sqlite3.def&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;l&amp;nbsp;sqlite3.lib&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
2.将sqlite3.lib,sqlite3.h文件放在vc6 的工程目录中；OK，已经可以编写sqlite3应用的代码了。&lt;br /&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
Vs2010与vc6方法和步骤都一样的，vs2003，vs2005我电脑上早就没有装了，&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;strong&gt;Codeblocks&lt;/strong&gt;&lt;br /&gt;&#xD;
1.通过dlltool工具，生成.a文件；&lt;br /&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000;"&gt;dlltool&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;D&amp;nbsp;sqlite3.dll&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;d&amp;nbsp;sqlite3.def&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;l&amp;nbsp;libsqlite3.a&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
2.将libsqlite3.a,sqlite3.h文件放在Codeblocks的工程目录中；&lt;br /&gt;&#xD;
3.Build optionLinker settingsLink librarys增加libsqlite3.a;&lt;br /&gt;&#xD;
4.Build optionSearch DirectoriesLinker点击Add按钮，添加当前目录；&lt;br /&gt;&#xD;
5.OK.&lt;br /&gt;&#xD;
Codeblocks注意一点：如果在设置Build option时，注意一下左边选择，我是选择了Debug和Release上面的项目名称添加的，所以又点了Copy all to&amp;#8230;按钮将配置复制到Debug和Release。&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;strong&gt;wxDev c++&lt;/strong&gt;&lt;br /&gt;&#xD;
1.通过dlltool工具，生成.a文件；&lt;br /&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000;"&gt;dlltool&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;D&amp;nbsp;sqlite3.dll&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;d&amp;nbsp;sqlite3.def&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;l&amp;nbsp;libsqlite3.a&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
2.将libsqlite3.a,sqlite3.h文件放在wxDev c++ 的工程目录中；&lt;br /&gt;&#xD;
3. Project OptionsDirectoriesInclude Directories增加&amp;#8220;.&amp;#8221;，意思为当前目录；&lt;br /&gt;&#xD;
4. Project OptionsParametersLinker增加libsqlite3.a；&lt;br /&gt;&#xD;
5.OK。&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;p&gt;下面分别是codeblocks sqlite，wxDev c++ sqlite，vc6 sqlite，vs2010 sqlite的工程代码以及sqlite3的相关文件，已经包含了sqlite3.dll，sqlite3.lib文件，下次用就省得去官网下载了,代码中的main.cpp是由sqlite官网站点提供的一个简单的打开数据库连接的例子。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://files.cnblogs.com/ode/c-cpp-sqlite-src.zip"&gt;&lt;span style="font-size: 18pt; color: #ff0000"&gt;&lt;strong&gt;示例代码下载&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;&#xD;
 &lt;img src="http://www.cnblogs.com/ode/aggbug/2074069.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ode/archive/2011/06/07/c-cpp-sqlite3-vc-wxdev-codeblocks.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ode/archive/2009/12/04/win7-aspnet-iis7_5.html</id><title type="text">开始使用Windows7的一些小问题</title><summary type="text">折腾了两天windows7：）down的是windows7的旗舰版试用版本，可以试用30天的。试用感受有很多朋友写了，我的感受可以简单概括为：速度较快，界面很好看。至于用于开发方面的特性，今天第一天用，还说不上什么一二三。不过继续项目开发时遇到几个问题。</summary><published>2009-12-04T09:58:00Z</published><updated>2009-12-04T09:58:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2009/12/04/win7-aspnet-iis7_5.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2009/12/04/win7-aspnet-iis7_5.html"/></entry><entry><id>http://www.cnblogs.com/ode/archive/2009/11/10/about-xxCMS-dotnetcms.html</id><title type="text">我的xxCMS解决方案（一）---- 整体介绍</title><summary type="text">最近打算彻底抛开webform和.net2.0，开始学习新知识，准备花点时间，把这个曾经让我欢喜让我忧，倾注了一些汗水的xxCMS写出来，请大家检阅，并根据大家的意见做一些修改后分发给觉得有用的朋友用。</summary><published>2009-11-10T07:51:00Z</published><updated>2009-11-10T07:51:00Z</updated><author><name>哥哥.Net</name><uri>http://www.cnblogs.com/ode/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ode/archive/2009/11/10/about-xxCMS-dotnetcms.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ode/archive/2009/11/10/about-xxCMS-dotnetcms.html"/></entry></feed>
