﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-知行合一</title><link>http://www.cppblog.com/devilbsd/</link><description>Talk is cheap, show me the code</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 08:36:33 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 08:36:33 GMT</pubDate><ttl>60</ttl><item><title>C++配置googletest</title><link>http://www.cppblog.com/devilbsd/archive/2015/11/13/212256.html</link><dc:creator>machinemind</dc:creator><author>machinemind</author><pubDate>Thu, 12 Nov 2015 18:10:00 GMT</pubDate><guid>http://www.cppblog.com/devilbsd/archive/2015/11/13/212256.html</guid><wfw:comment>http://www.cppblog.com/devilbsd/comments/212256.html</wfw:comment><comments>http://www.cppblog.com/devilbsd/archive/2015/11/13/212256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/devilbsd/comments/commentRss/212256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/devilbsd/services/trackbacks/212256.html</trackback:ping><description><![CDATA[在GitHub上下载googletest<br />&nbsp;$ git clone git@github.com:google/googletest.git<br />&nbsp;进入googletest目录<br />&nbsp;编译命令如下：<br />&nbsp; $ g++ -I./include/ -I./ -c ./src/gtest-all.cc<br />&nbsp; $ ar -rv libgtest.a gtest-all.o<br />&nbsp; $ cd ./make<br />&nbsp; $ make<br />此时会生成一个可执行文件sample1_unittest，执行测试;<br />&nbsp; $ ./sample1_unittest<br />测试成功.<br /><br />将静态文件拷贝到/usr/local/lib/下<br />&nbsp; $ cp libgtest.a /usr/local/lib<br />将头文件拷贝到/usr/local/include/下<br />&nbsp; $ cp -r gtest /usr/local/include/&nbsp;<br /><br />写一个简单的测试文件， example1.cpp<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&lt;gtest/gtest.h&gt;<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;#include&lt;iostream&gt;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;#include&lt;stdexcept&gt;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;Foo(<span style="color: #0000FF; ">int</span>&nbsp;a,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;b)<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(a&nbsp;==&nbsp;0&nbsp;||&nbsp;b&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;std::invalid_argument("don't&nbsp;do&nbsp;that!");<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;c&nbsp;=&nbsp;a&nbsp;%&nbsp;b;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(c&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;b;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;Foo(b,&nbsp;c);<br /><span style="color: #008080; ">15</span>&nbsp;}<br /><span style="color: #008080; ">16</span>&nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;TEST(FooTest,&nbsp;HandleNonZeroInput)<br /><span style="color: #008080; ">18</span>&nbsp;{<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPECT_EQ(2,&nbsp;Foo(4,&nbsp;10));<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPECT_EQ(6,&nbsp;Foo(30,&nbsp;18));<br /><span style="color: #008080; ">21</span>&nbsp;}<br /><span style="color: #008080; ">22</span>&nbsp;<br /><span style="color: #008080; ">23</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main(<span style="color: #0000FF; ">int</span>&nbsp;argc,&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;argv[])<br /><span style="color: #008080; ">24</span>&nbsp;{<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testing::InitGoogleTest(&amp;argc,&nbsp;argv);<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;RUN_ALL_TESTS();<br /><span style="color: #008080; ">27</span>&nbsp;}</div><br />编译命令：<br />&nbsp; $ g++ -std=c++11 example1.cpp -lgtest -pthread<br />&nbsp;// 注意需要链接的库<br />参考资料：<br />&nbsp;1. &nbsp;如何用gtest写单元测试: http://blog.csdn.net/russell_tao/article/details/7333226<br />&nbsp;2. &nbsp;初识gtest: http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html<br /><br />//<img src ="http://www.cppblog.com/devilbsd/aggbug/212256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/devilbsd/" target="_blank">machinemind</a> 2015-11-13 02:10 <a href="http://www.cppblog.com/devilbsd/archive/2015/11/13/212256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ MySQL开发配置mysql++.h</title><link>http://www.cppblog.com/devilbsd/archive/2015/11/12/212255.html</link><dc:creator>machinemind</dc:creator><author>machinemind</author><pubDate>Thu, 12 Nov 2015 15:55:00 GMT</pubDate><guid>http://www.cppblog.com/devilbsd/archive/2015/11/12/212255.html</guid><wfw:comment>http://www.cppblog.com/devilbsd/comments/212255.html</wfw:comment><comments>http://www.cppblog.com/devilbsd/archive/2015/11/12/212255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/devilbsd/comments/commentRss/212255.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/devilbsd/services/trackbacks/212255.html</trackback:ping><description><![CDATA[网上大多数C++开发都是用的c库，#include&lt;mysql/mysql.h&gt;。一直比较奇怪为什么不直接使用#include&lt;mysql++/mysql++.h&gt;<br />于是自己试了一番，写下以下Notes<br />文件名为: conn1.cpp<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;MYSQLPP_MYSQL_HEADERS_BURIED<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;#include&lt;mysql++/mysql++.h&gt;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;#include&lt;mysql++/cmdline.h&gt;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;#include&lt;iostream&gt;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main(<span style="color: #0000FF; ">int</span>&nbsp;argc,&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;argv[])<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;mysqlpp::examples::CommandLine&nbsp;cmdline(argc,&nbsp;argv);<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!cmdline)&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;1;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">12</span>&nbsp;}</div><br />注意事项:<br />&nbsp;1. 因为include了mysql++.h而不是mysql.h文件，可能提示缺少mysql_version.h文件。这时候只要在#include&lt;mysql++/mysql++.h&gt;这一行的上以行设置宏定义<span style="font-size: 13px; color: #0000ff;">#define</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;MYSQLPP_MYSQL_HEADERS_BURIED就能解决了<br /></span>&nbsp;2. mysql++的命名空间为mysqlpp<br />&nbsp;3. 编译链接库文件-lmysqlclient -lmysqlpp<br />所以编译命令为: $ g++ conn1.cpp -lmysqlclient -lmysqlpp<br /><br />还有很多内容没有写，下次继续吧。<br /><br />这是MySQL++用户手册的主页:http://www.tangentsoft.net/mysql++/doc/html/userman/index.html<br /><br />///<img src ="http://www.cppblog.com/devilbsd/aggbug/212255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/devilbsd/" target="_blank">machinemind</a> 2015-11-12 23:55 <a href="http://www.cppblog.com/devilbsd/archive/2015/11/12/212255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Boost事件处理之Boost.Signals</title><link>http://www.cppblog.com/devilbsd/archive/2015/11/09/212223.html</link><dc:creator>machinemind</dc:creator><author>machinemind</author><pubDate>Sun, 08 Nov 2015 17:35:00 GMT</pubDate><guid>http://www.cppblog.com/devilbsd/archive/2015/11/09/212223.html</guid><wfw:comment>http://www.cppblog.com/devilbsd/comments/212223.html</wfw:comment><comments>http://www.cppblog.com/devilbsd/archive/2015/11/09/212223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/devilbsd/comments/commentRss/212223.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/devilbsd/services/trackbacks/212223.html</trackback:ping><description><![CDATA[根据网址：<a href="http://zh.highscore.de/cpp/boost/eventhandling.html" title="Boost C++ 库 第 4 章 事件处理">Boost C++ 库 第 4 章 事件处理</a><br />示例代码<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&nbsp;&lt;boost/signal.hpp&gt;&nbsp;<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;#include&nbsp;&lt;iostream&gt;&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;func()&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;{&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"Hello,&nbsp;world!"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;}&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;{&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;boost::signal&lt;<span style="color: #0000FF; ">void</span>&nbsp;()&gt;&nbsp;s;&nbsp;<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;s.connect(func);&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;s();&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;}&nbsp;</div><br /><br />编译：$&nbsp;<span style="font-size: 13px; background-color: #eeeeee;">g</span><span style="font-size: 13px; background-color: #eeeeee;">++</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;Sample1</span><span style="font-size: 13px; background-color: #eeeeee;">.</span><span style="font-size: 13px; background-color: #eeeeee;">cpp&nbsp;</span><span style="font-size: 13px; background-color: #eeeeee;">-</span><span style="font-size: 13px; background-color: #eeeeee;">lboost_signals</span><br /><br />一大堆提示信息：<br /><div>/usr/local/include/boost/signal.hpp:17:4: warning: #warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING."</div>口怕，实际上是提示我们Boost.Signals已经过期废弃不维护了，请选择用Boost.Signals2来替换。<br />首先，确定signal2位置：$ ls /usr/local/include/boost/signal2/<br />对，就是这个位置。<br />修改下原来代码<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&nbsp;&lt;boost/signals2/signal.hpp&gt;&nbsp;<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;#include&nbsp;&lt;iostream&gt;&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;func()&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;{&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"Hello,&nbsp;world!"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;}&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;{&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;boost::signals2::signal&lt;<span style="color: #0000FF; ">void</span>&nbsp;()&gt;&nbsp;s;&nbsp;<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;s.connect(func);&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;s();&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;}&nbsp;</div><br />实际上修改的就是Line2和Line11，修改下include的signal.hpp文件位置以及命名空间<br />再编译： $ g++ Sample2.cpp -lboost_signals<br />现在OK，没有一大堆的warning了<br /><br />后面再附加一个Functor的例子。<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&nbsp;&lt;boost/signals2/signal.hpp&gt;<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;#include&nbsp;&lt;iostream&gt;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;HelloWorld<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;<span style="color: #0000FF; ">operator</span>()()&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"Hello,&nbsp;World!"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;};<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;boost::signals2::signal&lt;<span style="color: #0000FF; ">void</span>()&gt;&nbsp;sig;<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;HelloWorld&nbsp;hello;<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;sig.connect(hello);&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Note,not&nbsp;"sig.connect(hello());"</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;sig();<br /><span style="color: #008080; ">17</span>&nbsp;<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br /><span style="color: #008080; ">19</span>&nbsp;}</div><br />编译: $ g++ Sample3.cpp -lboost_signals<br /><img src ="http://www.cppblog.com/devilbsd/aggbug/212223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/devilbsd/" target="_blank">machinemind</a> 2015-11-09 01:35 <a href="http://www.cppblog.com/devilbsd/archive/2015/11/09/212223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>