﻿<?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++博客-colorful-随笔分类-protobuf</title><link>http://www.cppblog.com/colorful/category/19269.html</link><description>zc qq:1337220912</description><language>zh-cn</language><lastBuildDate>Mon, 19 Jan 2015 14:58:12 GMT</lastBuildDate><pubDate>Mon, 19 Jan 2015 14:58:12 GMT</pubDate><ttl>60</ttl><item><title>Quick-Cocos2d-x 集成 Google protobuf 方法</title><link>http://www.cppblog.com/colorful/archive/2015/01/17/209557.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sat, 17 Jan 2015 08:08:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2015/01/17/209557.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/209557.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2015/01/17/209557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/209557.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/209557.html</trackback:ping><description><![CDATA[<div>http://cn.cocos2d-x.org/tutorial/show?id=506</div><br /><div><div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	本文将向您介绍Quick-Cocos2d-x集成google protobuf的方法。 &nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	<strong>第一步 &nbsp; 需要最新的protobuf 类库和解析程序。&nbsp;</strong>  </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	下载地址：<a href="https://github.com/sean-lin/protoc-gen-lua" target="_blank"><span style="color:#0000FF;">https://github.com/sean-lin/protoc-gen-lua</span></a>  </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	git clone&nbsp;<a href="https://github.com/sean-lin/protoc-gen-lua.git" target="_blank"><span style="color:#0000FF;">https://github.com/sean-lin/protoc-gen-lua.git</span></a>&nbsp;到任意的一个地方 </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	然后，可以得到重要的两个目录 </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	<span style="line-height:1.5;"> </span></p><div><div id="highlighter_782255"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div><div number2="" index1=""  alt1"="">2</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">protoc-gen-lua/plugin/&nbsp; </code></div><div number2="" index1=""  alt1"=""><code plain"="">protoc-gen-lua/protobuf/</code></div></div></td></tr></tbody></table></div></div> &nbsp;  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	<strong>第二步， 需要使用protoc &#8212;lua_out=. 这种方法， 将我们自己的*.proto 的文件解析成lua文件</strong>  </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	plugin目录是提供将buffer 文件解析成lua 版本的类库， 需要python 支持。 &nbsp;如果已经编译了google 官方的protoc 那个程序， 只需要在系统PATH环境变量总追加plugin目录就好: </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_807689"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">export PATH={protoc-gen-lua DIR }/plugin:$PATH</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	关于protoc的编译另请google . </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	如果解析不出lua文件来， 可以手动志信一下plugin/protoc-gen-lua的程序， 他应该是+x 的权限(chmod +x plugin/protoc-gen-lua) </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	细节的安装步骤可以参考&nbsp;<a href="https://code.google.com/p/protoc-gen-lua/" target="_blank"><span style="color:#0000FF;">https://code.google.com/p/protoc-gen-lua/</span></a>  </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	<strong>第三步 ， 将protobuf 集成到quick 中</strong>  </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	protoc-gen-lua/protobuf/ 目录就是要编译到quick-cocos2d-x目录里面的部分。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	现在， 我们只需要 protoc-gen-lua/protobuf/pb.c 这个文件&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	先确定自己的quick-cocos2d-x lua扩展目录： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_519328"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">/quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	所有lua 的c/c++现成扩展,都可以直接放到这里。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	将pb.c这个文件复制到 lua_extension目录下， 最好独立一个目录， 免得扩展多了乱。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	这是我的目录结构: </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_734895"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	然后开始修改扩展程序配置文件, lua_extensions.c </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	路径为： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_466030"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/lua_extensions.c</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	目前是一个不足60行的小文件， 我打算全部贴进来： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_924060"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div><div number2="" index1=""  alt1"="">2</div><div number3="" index2=""  alt2"="">3</div><div number4="" index3=""  alt1"="">4</div><div number5="" index4=""  alt2"="">5</div><div number6="" index5=""  alt1"="">6</div><div number7="" index6=""  alt2"="">7</div><div number8="" index7=""  alt1"="">8</div><div number9="" index8=""  alt2"="">9</div><div number10="" index9=""  alt1"="">10</div><div number11="" index10=""  alt2"="">11</div><div number12="" index11=""  alt1"="">12</div><div number13="" index12=""  alt2"="">13</div><div number14="" index13=""  alt1"="">14</div><div number15="" index14=""  alt2"="">15</div><div number16="" index15=""  alt1"="">16</div><div number17="" index16=""  alt2"="">17</div><div number18="" index17=""  alt1"="">18</div><div number19="" index18=""  alt2"="">19</div><div number20="" index19=""  alt1"="">20</div><div number21="" index20=""  alt2"="">21</div><div number22="" index21=""  alt1"="">22</div><div number23="" index22=""  alt2"="">23</div><div number24="" index23=""  alt1"="">24</div><div number25="" index24=""  alt2"="">25</div><div number26="" index25=""  alt1"="">26</div><div number27="" index26=""  alt2"="">27</div><div number28="" index27=""  alt1"="">28</div><div number29="" index28=""  alt2"="">29</div><div number30="" index29=""  alt1"="">30</div><div number31="" index30=""  alt2"="">31</div><div number32="" index31=""  alt1"="">32</div><div number33="" index32=""  alt2"="">33</div><div number34="" index33=""  alt1"="">34</div><div number35="" index34=""  alt2"="">35</div><div number36="" index35=""  alt1"="">36</div><div number37="" index36=""  alt2"="">37</div><div number38="" index37=""  alt1"="">38</div><div number39="" index38=""  alt2"="">39</div><div number40="" index39=""  alt1"="">40</div><div number41="" index40=""  alt2"="">41</div><div number42="" index41=""  alt1"="">42</div><div number43="" index42=""  alt2"="">43</div><div number44="" index43=""  alt1"="">44</div><div number45="" index44=""  alt2"="">45</div><div number46="" index45=""  alt1"="">46</div><div number47="" index46=""  alt2"="">47</div><div number48="" index47=""  alt1"="">48</div><div number49="" index48=""  alt2"="">49</div><div number50="" index49=""  alt1"="">50</div><div number51="" index50=""  alt2"="">51</div><div number52="" index51=""  alt1"="">52</div><div number53="" index52=""  alt2"="">53</div><div number54="" index53=""  alt1"="">54</div><div number55="" index54=""  alt2"="">55</div><div number56="" index55=""  alt1"="">56</div><div number57="" index56=""  alt2"="">57</div><div number58="" index57=""  alt1"="">58</div><div number59="" index58=""  alt2"="">59</div><div number60="" index59=""  alt1"="">60</div><div number61="" index60=""  alt2"="">61</div><div number62="" index61=""  alt1"="">62</div><div number63="" index62=""  alt2"="">63</div><div number64="" index63=""  alt1"="">64</div><div number65="" index64=""  alt2"="">65</div><div number66="" index65=""  alt1"="">66</div><div number67="" index66=""  alt2"="">67</div><div number68="" index67=""  alt1"="">68</div><div number69="" index68=""  alt2"="">69</div><div number70="" index69=""  alt1"="">70</div></td><td><div><div number1="" index0=""  alt2"=""><code preprocessor"="">#include "lua_extensions.h"&nbsp; </code></div><div number2="" index1=""  alt1"=""><code spaces"="">&nbsp;&nbsp;</code>&nbsp;</div><div number3="" index2=""  alt2"=""><code preprocessor"="">#if __cplusplus&nbsp; </code></div><div number4="" index3=""  alt1"=""><code keyword=""  bold"="">extern</code> <code string"="">"C"</code> <code plain"="">{&nbsp; </code></div><div number5="" index4=""  alt2"=""><code preprocessor"="">#endif&nbsp; </code></div><div number6="" index5=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number7="" index6=""  alt2"=""><code comments"="">// cjson&nbsp; </code></div><div number8="" index7=""  alt1"=""><code preprocessor"="">#include "cjson/lua_cjson.h"&nbsp; </code></div><div number9="" index8=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number10="" index9=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number11="" index10=""  alt2"=""><code comments"="">// zlib&nbsp; </code></div><div number12="" index11=""  alt1"=""><code preprocessor"="">#include "zlib/lua_zlib.h"&nbsp; </code></div><div number13="" index12=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number14="" index13=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number15="" index14=""  alt2"=""><code comments"="">// lpack&nbsp; </code></div><div number16="" index15=""  alt1"=""><code preprocessor"="">#include "lpack/lpack.h"&nbsp; </code></div><div number17="" index16=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number18="" index17=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number19="" index18=""  alt2"=""><code comments"="">// socket&nbsp; </code></div><div number20="" index19=""  alt1"=""><code preprocessor"="">#include "socket/luasocket.h"&nbsp; </code></div><div number21="" index20=""  alt2"=""><code preprocessor"="">#include "socket/mime.h"&nbsp; </code></div><div number22="" index21=""  alt1"=""><code preprocessor"="">#include "socket/socket_scripts.h"&nbsp; </code></div><div number23="" index22=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number24="" index23=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number25="" index24=""  alt2"=""><code comments"="">// filesystem&nbsp; </code></div><div number26="" index25=""  alt1"=""><code preprocessor"="">#include "filesystem/lfs.h"&nbsp; </code></div><div number27="" index26=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number28="" index27=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number29="" index28=""  alt2"=""><code comments"="">// lsqlite3&nbsp; </code></div><div number30="" index29=""  alt1"=""><code preprocessor"="">#include "lsqlite3/lsqlite3.h"&nbsp; </code></div><div number31="" index30=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number32="" index31=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number33="" index32=""  alt2"=""><code preprocessor"="">#include "protobuf/pb.c"&nbsp;&nbsp; //引用protobuf 库文件&nbsp; </code></div><div number34="" index33=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number35="" index34=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number36="" index35=""  alt1"=""><code keyword=""  bold"="">static</code> <code plain"="">luaL_Reg luax_exts[] = {&nbsp; </code></div><div number37="" index36=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"cjson"</code><code plain"="">, luaopen_cjson_safe},&nbsp; </code></div><div number38="" index37=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"zlib"</code><code plain"="">, luaopen_zlib},&nbsp; </code></div><div number39="" index38=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"pack"</code><code plain"="">, luaopen_pack},&nbsp; </code></div><div number40="" index39=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"socket.core"</code><code plain"="">, luaopen_socket_core},&nbsp; </code></div><div number41="" index40=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"mime.core"</code><code plain"="">, luaopen_mime_core},&nbsp; </code></div><div number42="" index41=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"lfs"</code><code plain"="">, luaopen_lfs},&nbsp; </code></div><div number43="" index42=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{</code><code string"="">"lsqlite3"</code><code plain"="">, luaopen_lsqlite3},&nbsp; </code></div><div number44="" index43=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{NULL, NULL}&nbsp; </code></div><div number45="" index44=""  alt2"=""><code plain"="">};&nbsp; </code></div><div number46="" index45=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number47="" index46=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number48="" index47=""  alt1"=""><code keyword=""  bold"="">void</code> <code plain"="">luaopen_lua_extensions(lua_State *L)&nbsp; </code></div><div number49="" index48=""  alt2"=""><code plain"="">{&nbsp; </code></div><div number50="" index49=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code comments"="">// load extensions&nbsp; </code></div><div number51="" index50=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">luaL_Reg* lib = luax_exts;&nbsp; </code></div><div number52="" index51=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">lua_getglobal(L, </code><code string"="">"package"</code><code plain"="">);&nbsp; </code></div><div number53="" index52=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">lua_getfield(L, -1, </code><code string"="">"preload"</code><code plain"="">);&nbsp; </code></div><div number54="" index53=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code keyword=""  bold"="">for</code> <code plain"="">(; lib-&gt;func; lib++)&nbsp; </code></div><div number55="" index54=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">{&nbsp; </code></div><div number56="" index55=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">lua_pushcfunction(L, lib-&gt;func);&nbsp; </code></div><div number57="" index56=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">lua_setfield(L, -2, lib-&gt;name);&nbsp; </code></div><div number58="" index57=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">}&nbsp; </code></div><div number59="" index58=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">lua_pop(L, 2);&nbsp; </code></div><div number60="" index59=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number61="" index60=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number62="" index61=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code comments"="">// load extensions script&nbsp; </code></div><div number63="" index62=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">luaopen_socket_scripts(L);&nbsp; </code></div><div number64="" index63=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code plain"="">luaopen_pb(L);&nbsp;&nbsp; </code><code comments"="">//这是加入的protobuf 扩展注册名&nbsp; </code></div><div number65="" index64=""  alt2"=""><code plain"="">}&nbsp; </code></div><div number66="" index65=""  alt1"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number67="" index66=""  alt2"=""><code spaces"="">&nbsp;&nbsp;&nbsp;</code>&nbsp;</div><div number68="" index67=""  alt1"=""><code preprocessor"="">#if __cplusplus&nbsp; </code></div><div number69="" index68=""  alt2"=""><code plain"="">} </code><code comments"="">// extern "C"&nbsp; </code></div><div number70="" index69=""  alt1"=""><code preprocessor"="">#endif</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	至此 ， protobuf 扩展部分就算扩展完成了。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	确认是否成功支持 ， 可以在quick 项目最先被调用的lua文件中追加 require "pb" 做测试。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	*但这时候通过protoc 转码后得到的lua文件还不能被解析。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	<strong>第四步 从项目中包含protobuf的 lua库</strong>  </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	protoc-gen-lua/protobuf/这个目录下面， 还有大量的.lua文件， 是用来支持proto转码后的文件解析调用的。 不能少了这些文件。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	复制protoc-gen-lua/protobuf文件夹 到项目中 scripts目录下。 &nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	目录结构应该是这样的： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_997850"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">[PROJECT]/scripts/protobuf/*.lua</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	然后， 需要告诉框架，从哪里可以引用到它。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	修改main.lua 在require("appxxxxxx") 上面 ， 加入下面的代码： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_501035"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">package.path = package.path .. </code><code string"="">";./protobuf/?.lua;./scripts/protobuf/?.lua;"</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	这个方法， 能保证程序在被编译到手机之后仍然可以继续访问这个库。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	***千万别把转码的proto文件放到[PROJECT]/scripts/protobuf 目录里面.不信可以试试。 </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	现在， 项目支持protobuf 文件的解析了。 </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	<strong>第五步 &nbsp;重新编译player-x</strong>  </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	如果不习惯用player-x调试， 这个步骤不是必须的。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	进入player-x qt源码目录 ： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_820149"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">cd quick-cocos2d-x/player/proj.qt</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	使用qmake 文件执行quick-x.pro 文件&nbsp; </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_314279"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">qmake ./quick-x.pro</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	继续： </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	make&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	等待结束， 将得到的quick-x-player文件，&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	放到：quick-cocos2d-x/player/bin/mac/ 目录下， 这样sublime text 装QuickXDev 扩展的直接可以用。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	**如果是mac os 10.9 系统， 可能编译不过去player-x程序。 我遇到了这个问题。&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	会提示错误 &nbsp;pb.c:28:10: fatal error: 'endian.h' file not found&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	如果错误信息相同， 修改文件: </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_874678"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code plain"="">./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	查找行: </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_715871"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code preprocessor"="">#include &lt;endian.h&gt;</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	临时变更为： </p> <p style="color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> </p><div><div id="highlighter_674497"  cpp"=""><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div number1="" index0=""  alt2"="">1</div></td><td><div><div number1="" index0=""  alt2"=""><code preprocessor"="">#include &lt;machine/endian.h&gt;</code></div></div></td></tr></tbody></table></div></div>  <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp;&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	然后重新编译 player-x&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	make 就足够了&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	make </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	&nbsp; </div> <div style="margin:0px;padding:0px;color:#333333;font-family:'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif;font-size:14px;background-color:#FFFFFF;"> 	**player-x 编译完毕后， 千万要将endian.h 引用改回原来的 #include &lt;endian.h&gt; ， 否则打包到手机的时候又回提示文件找不到了。&nbsp; </div></div><img src ="http://www.cppblog.com/colorful/aggbug/209557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2015-01-17 16:08 <a href="http://www.cppblog.com/colorful/archive/2015/01/17/209557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用proto 时犯的一个错误</title><link>http://www.cppblog.com/colorful/archive/2012/05/22/175781.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Tue, 22 May 2012 10:00:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/22/175781.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/175781.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/22/175781.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/175781.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/175781.html</trackback:ping><description><![CDATA[<div>自己定义的 #define CMD_ID_SERVER&nbsp; 1000<br /><br />然后在proto文件里定义了 <br />enum CMD_ID<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CMD_ID_SERVER = 20000;<br />}<br /><br />得到下面的错误<br /><div>Error&nbsp;&nbsp; &nbsp;7&nbsp;&nbsp; &nbsp;error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;46<br />Error&nbsp;&nbsp; &nbsp;9&nbsp;&nbsp; &nbsp;error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;46<br />Error&nbsp;&nbsp; &nbsp;10&nbsp;&nbsp; &nbsp;error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;47<br />Error&nbsp;&nbsp; &nbsp;13&nbsp;&nbsp; &nbsp;error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;47<br />Error&nbsp;&nbsp; &nbsp;20&nbsp;&nbsp; &nbsp;error C2447: '{' : missing function header (old-style formal list?)&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;51<br />Error&nbsp;&nbsp; &nbsp;27&nbsp;&nbsp; &nbsp;error C2447: '{' : missing function header (old-style formal list?)&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;431<br />Error&nbsp;&nbsp; &nbsp;17&nbsp;&nbsp; &nbsp;error C2440: 'initializing' : cannot convert from 'const int' to 'const std::string &amp;'&nbsp;&nbsp; &nbsp;e:\zc\test\doloio\package\hello\hello.pb.h&nbsp;&nbsp; &nbsp;51<br />。。。。。。。。。。</div><br />------------------------------------------<br />其实根据错误信息应该很容易发现错误所在，但因为我心急，没能静下心来看错误信息以至浪费了更多的时间和精力于无谓的猜测试验<br /><br /><br /></div><img src ="http://www.cppblog.com/colorful/aggbug/175781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-22 18:00 <a href="http://www.cppblog.com/colorful/archive/2012/05/22/175781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下安装protobuf教程+示例（详细） </title><link>http://www.cppblog.com/colorful/archive/2012/05/05/173761.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sat, 05 May 2012 10:17:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/05/173761.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173761.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/05/173761.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173761.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173761.html</trackback:ping><description><![CDATA[<div><div style="font-family:微软雅黑; font-size:18px">1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。</div> <div style="font-family:微软雅黑; font-size:18px">安装步骤如下所示：</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;tar -xzf protobuf-2.1.0.tar.gz&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;cd protobuf-2.1.0&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;./configure --prefix=/usr/local/protobuf</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;make&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;make check&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;make install&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;2 &gt; sudo vim /etc/profile</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;添加</div> <div style="font-family:微软雅黑; font-size:18px">export PATH=$PATH:/usr/local/protobuf/bin/</div> <div style="font-family:微软雅黑; font-size:18px">export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/</div> <div style="font-family:微软雅黑; font-size:18px">保存执行</div> <div style="font-family:微软雅黑; font-size:18px">source /etc/profile</div> <div style="font-family:微软雅黑; font-size:18px"><br /> </div> <div style="font-family:微软雅黑; font-size:18px">同时 在~/.profile中添加上面两行代码，否则会出现登录用户找不到protoc命令</div> <div style="font-family:微软雅黑; font-size:18px"><br /> </div> <div style="font-family:微软雅黑; font-size:18px">3 &gt; 配置动态链接库路径</div> <div style="font-family:微软雅黑; font-size:18px">sudo vim /etc/ld.so.conf</div> <div style="font-family:微软雅黑; font-size:18px">插入：</div> <div style="font-family:微软雅黑; font-size:18px">/usr/local/protobuf/lib</div> <div style="font-family:微软雅黑; font-size:18px"><br /> </div> <div style="font-family:微软雅黑; font-size:18px">4 &gt; su &nbsp;#root 权限</div> <div style="font-family:微软雅黑; font-size:18px">ldconfig</div> <div style="font-family:微软雅黑; font-size:18px"><br /> </div> <span style="font-family:微软雅黑; font-size:18px">5&gt; 写消息文件：msg.proto</span><div bg_cpp"=""><ol start="1"><li><span>package&nbsp;lm;&nbsp;&nbsp;&nbsp;</span></li><li>message&nbsp;helloworld&nbsp;&nbsp;&nbsp;</li><li>{&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;int32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;=&nbsp;1;&nbsp;&nbsp;<span>//&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;2;&nbsp;&nbsp;<span>//&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;optional&nbsp;int32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt&nbsp;=&nbsp;3;&nbsp;&nbsp;<span>//optional&nbsp;field&nbsp;&nbsp;&nbsp;</span></li><li>}&nbsp;&nbsp;</li></ol></div> <div style="font-family:微软雅黑; font-size:18px">将消息文件msg.proto映射成cpp文件</div> <div style="font-family:微软雅黑; font-size:18px">protoc -I=. --cpp_out=. msg.proto</div> <div style="font-family:微软雅黑; font-size:18px">可以看到生成了</div> <div style="font-family:微软雅黑; font-size:18px">msg.pb.h 和msg.pb.cc</div> <div style="font-family:微软雅黑; font-size:18px"><span style="font-family:微软雅黑; font-size:18px"><br /> </span></div> <div style="font-family:微软雅黑; font-size:18px">6&gt; 写序列化消息的进程</div> <div style="font-family:微软雅黑; font-size:18px">write.cc</div> <div bg_cpp"=""><ol start="1"><li><span>#include&nbsp;"msg.pb.h"&nbsp;&nbsp;</span></li><li><span>#include&nbsp;&lt;fstream&gt;&nbsp;&nbsp;</span></li><li><span>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;</span></li><li><span>using&nbsp;namespace&nbsp;std;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li><span>int&nbsp;main(void)&nbsp;&nbsp;&nbsp;</span></li><li>{&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;lm::helloworld&nbsp;msg1;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;msg1.set_id(101);&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;msg1.set_str(<span>"hello");&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;fstream&nbsp;output(<span>"./log",&nbsp;ios::out&nbsp;|&nbsp;ios::trunc&nbsp;|&nbsp;ios::binary);&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>if&nbsp;(!msg1.SerializeToOstream(&amp;output))&nbsp;{&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&nbsp;&lt;&lt;&nbsp;<span>"Failed&nbsp;to&nbsp;write&nbsp;msg."&nbsp;&lt;&lt;&nbsp;endl;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;-1;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;0;&nbsp;&nbsp;&nbsp;</span></li><li>}&nbsp;&nbsp;</li></ol></div> <div style="font-family:微软雅黑; font-size:18px">编译 write.cc&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;g++ &nbsp;msg.pb.cc write.cc -o write &nbsp;`pkg-config --cflags --libs protobuf` -lpthread</div> <div style="font-family:微软雅黑; font-size:18px">&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">执行write&nbsp;</div> <div style="font-family:微软雅黑; font-size:18px">./write， 可以看到生成了log文件</div> <div style="font-family:微软雅黑; font-size:18px"><span style="font-family:微软雅黑; font-size:18px"><br /> </span></div> <div style="font-family:微软雅黑; font-size:18px">7&gt; 写反序列化的进程</div> <div style="font-family:微软雅黑; font-size:18px">reader.cc<div bg_cpp"=""><ol start="1"><li><span>#include&nbsp;"msg.pb.h"&nbsp;&nbsp;</span></li><li><span>#include&nbsp;&lt;fstream&gt;&nbsp;&nbsp;</span></li><li><span>#include&nbsp;&lt;iostream&gt;&nbsp;&nbsp;</span></li><li><span>using&nbsp;namespace&nbsp;std;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li><span>void&nbsp;ListMsg(const&nbsp;lm::helloworld&nbsp;&amp;&nbsp;msg)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;msg.id()&nbsp;&lt;&lt;&nbsp;endl;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;msg.str()&nbsp;&lt;&lt;&nbsp;endl;&nbsp;&nbsp;&nbsp;</li><li>}&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li><span>int&nbsp;main(int&nbsp;argc,&nbsp;char*&nbsp;argv[])&nbsp;{&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;lm::helloworld&nbsp;msg1;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fstream&nbsp;input(<span>"./log",&nbsp;ios::in&nbsp;|&nbsp;ios::binary);&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>if&nbsp;(!msg1.ParseFromIstream(&amp;input))&nbsp;{&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&nbsp;&lt;&lt;&nbsp;<span>"Failed&nbsp;to&nbsp;parse&nbsp;address&nbsp;book."&nbsp;&lt;&lt;&nbsp;endl;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;-1;&nbsp;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;ListMsg(msg1);&nbsp;&nbsp;&nbsp;</li><li>}&nbsp;&nbsp;</li></ol></div> <div style="font-family:微软雅黑; font-size:18px">编译：g++ &nbsp;msg.pb.cc reader.cc -o reader &nbsp;`pkg-config --cflags --libs protobuf` -lpthread</div> <div style="font-family:微软雅黑; font-size:18px">执行./reader 输出 ：</div> <div style="font-family:微软雅黑; font-size:18px">101</div> <div style="font-family:微软雅黑; font-size:18px">hello</div> <br /> </div> <span style="font-family:微软雅黑; font-size:18px">8&gt; 写Makefile文件</span><div bg_cpp"=""><ol start="1"><li><span>all:&nbsp;write&nbsp;reader&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li>clean:&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;rm&nbsp;-f&nbsp;write&nbsp;reader&nbsp;msg.*.cc&nbsp;msg.*.h&nbsp;*.o&nbsp;&nbsp;log&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>proto_msg:&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;protoc&nbsp;--cpp_out=.&nbsp;msg.proto&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>write:&nbsp;msg.pb.cc&nbsp;write.cc&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;g++&nbsp;&nbsp;msg.pb.cc&nbsp;write.cc&nbsp;-o&nbsp;write&nbsp;&nbsp;`pkg-config&nbsp;--cflags&nbsp;--libs&nbsp;protobuf`&nbsp;&nbsp;</li><li>&nbsp;&nbsp;</li><li>reader:&nbsp;msg.pb.cc&nbsp;reader.cc&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;g++&nbsp;&nbsp;msg.pb.cc&nbsp;reader.cc&nbsp;-o&nbsp;reader&nbsp;&nbsp;`pkg-config&nbsp;--cflags&nbsp;--libs&nbsp;protobuf`&nbsp; <br /></li></ol></div></div><img src ="http://www.cppblog.com/colorful/aggbug/173761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-05 18:17 <a href="http://www.cppblog.com/colorful/archive/2012/05/05/173761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>protobuf安装后出现libprotobuf.so.6 not found after installation</title><link>http://www.cppblog.com/colorful/archive/2012/05/05/173739.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sat, 05 May 2012 06:41:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/05/173739.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173739.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/05/173739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173739.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173739.html</trackback:ping><description><![CDATA[<div>Please follow the instructions in README.txt: <br /> <br />** Hint on install location ** <br /> <br />&nbsp; By default, the package will be installed to /usr/local.&nbsp; However, <br />&nbsp; on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH. <br />&nbsp; You can add it, but it may be easier to just install to /usr <br />&nbsp; instead.&nbsp; To do this, invoke configure as follows: <br /> <br />&nbsp;&nbsp;&nbsp; ./configure --prefix=/usr <br /> <br />&nbsp; If you already built the package with a different prefix, make sure <br />&nbsp; to run "make clean" before building again. <br /> <br />** 翻译 translate ** <br /> <br />&nbsp; 默认情况下，包会被安装在/usr/local路径下。但是，在某些系统平台上(如Ubuntu  11)，/usr/local/lib路径并不包含在LD_LIBRARY_PATH中。你可以手动添加，但也可以很方便的通过安装到/usr路径下，调 用configure命令参数如下 <br /> <br />&nbsp;&nbsp;&nbsp; ./configure --prefix=/usr <br /> <br />&nbsp; 如果你的包已经编译过，确保先运行"make clean"再重新编译。 <br /> <br />reference:<a target="_blank" href="http://code.google.com/p/protobuf/issues/detail?id=213">http://code.google.com/p/protobuf/issues/detail?id=213</a></div><img src ="http://www.cppblog.com/colorful/aggbug/173739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-05 14:41 <a href="http://www.cppblog.com/colorful/archive/2012/05/05/173739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu安装protobuf</title><link>http://www.cppblog.com/colorful/archive/2012/05/05/173738.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sat, 05 May 2012 06:35:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/05/173738.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173738.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/05/173738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173738.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173738.html</trackback:ping><description><![CDATA[<div><div id="blog_content">     <li>1.下载<a target="_blank" href="http://code.google.com/p/protobuf/downloads/list">http://code.google.com/p/protobuf/downloads/list</a> </li><li>2.解压 </li><div id=""><div><div>Shell代码 &nbsp;<a title="收藏这段代码"><img src="http://yuu1987.iteye.com/images/icon_star.png" alt="收藏代码" /></a></div></div><ol start="1"><li><span>tar&nbsp;jxvf&nbsp;protobuf-2.4.1.tar.bz2&nbsp;protobuf&nbsp;&nbsp;</span></li></ol></div> <li>3.编译 </li><div id=""><div><div>Shell代码 &nbsp;<a title="收藏这段代码"><img src="http://yuu1987.iteye.com/images/icon_star.png" alt="收藏代码" /></a></div></div><ol start="1"><li><span>$&nbsp;./configure&nbsp;&nbsp;</span></li><li>$&nbsp;make&nbsp;&nbsp;</li><li>$&nbsp;make&nbsp;install&nbsp;&nbsp;</li></ol></div>&nbsp;&nbsp;&nbsp;  <li>4.使用 </li><div id=""><div><div>Shell代码 &nbsp;<a title="收藏这段代码"><img src="http://yuu1987.iteye.com/images/icon_star.png" alt="收藏代码" /></a></div></div><ol start="1"><li><span>/usr/bin/protoc&nbsp;/home/jiangrongyong/work/proto/*.proto&nbsp;--proto_path=/home/jiangrongyong/work/proto&nbsp;--java_out=/home/jiangrongyong/work/proto-output&nbsp;&nbsp;</span></li></ol></div> <br /> <br />protobuf安装后出现libprotobuf.so.6 not found after installation <br /><a target="_blank" href="http://yuu1987.iteye.com/blog/1240712">http://yuu1987.iteye.com/blog/1240712</a>   </div>               <div id="bottoms">          <div id="share_weibo">分享到：       <a data-type="sina" title="分享到新浪微博"><img src="http://yuu1987.iteye.com/images/sina.jpg"  alt="" /></a>       <a data-type="qq" title="分享到腾讯微博"><img src="http://yuu1987.iteye.com/images/tec.jpg"  alt="" /></a>     </div>   </div></div><img src ="http://www.cppblog.com/colorful/aggbug/173738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-05 14:35 <a href="http://www.cppblog.com/colorful/archive/2012/05/05/173738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ProtocolBuffers2.4.1应用说明(一)</title><link>http://www.cppblog.com/colorful/archive/2012/03/02/167012.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Fri, 02 Mar 2012 14:04:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/03/02/167012.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/167012.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/03/02/167012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/167012.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/167012.html</trackback:ping><description><![CDATA[<div class="tit">ProtocolBuffers2.4.1应用说明(一)</div>
<div class="date">2012-02-03 12:07</div>
<table style="table-layout: fixed; width: 100%">
<tbody>
<tr>
<td>
<div class="cnt" id="blog_text">
<p>&nbsp;</p>
<p>客方的ProtocolBuffers 详细说明，可以下载最新版的ProtocolBuffers包。</p>
<p>我所下载的包是：protobuf-2.4.1.tar.bz2 、&nbsp;protoc-2.4.1-win32.zip</p>
<p>&nbsp;</p>
<p>ProtocolBuffers&nbsp;首页：<a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html">http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html</a></p>
<p>protobuf-2.4.1.tar.bz2 &nbsp;是源码包</p>
<p>&nbsp;protoc-2.4.1-win32.zip 是编译 .proto 文件的编译器</p>
<p>本文使用 ProtocolBuffers&nbsp;的环境</p>
<p>操作系统： windows 7 64位</p>
<p>开发工具：Visual studio 2008</p>
<p>开发语言：C++、MFC类库</p>
<p><strong>第一步： 编译protobuf-2.4.1工程</strong></p>
<p>说明：编译protobuf-2.4.1工程后生成 libprotobuf.lib,&nbsp;libprotobuf.lib 会在自已的工程文件中用到这个库文件</p>
<p>1）当前的目录结构为：</p>
<p><span></span>E:\ProtocolBuffers\ 此目录结构下有两个包 protobuf-2.4.1.tar.bz2 、protoc-2.4.1-win32.zip</p>
<p>2）解压 protobuf-2.4.1.tar.bz2 包</p>
<p><span></span>会生 E:\ProtocolBuffers\protobuf-2.4.1\protobuf-2.4.1目录结构</p>
<p><span></span>调整后的目录结构为：E:\ProtocolBuffers\protobuf-2.4.1目录结构，便于应用。</p>
<p>3）VS2008编译工程</p>
<p><span></span>找到 E:\ProtocolBuffers\protobuf-2.4.1\vsprojects\protobuf.sln文件。</p>
<p><span></span>用VS2008 打开，然后编译整个功程，很顺利的编译完整个功程。</p>
<p>如图所示：</p>
<p>&nbsp; &nbsp;&nbsp;<span><img src="http://hiphotos.baidu.com/harbinxxh/pic/item/c618a227d40735faec404c0d9e510fb30e2408d9.jpg" small="0" alt="" /></span></p>
<p>编译完成后会在E:\ProtocolBuffers\protobuf-2.4.1\vsprojects\Debug 目录结构中生成libprotobuf.lib库文件。</p>
<p>4) 如果出现问题：</p>
<p><span></span></p>
<p>可以阅读 vsprojects\readme.txt 说明文档。&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p><strong>第二步：编写 .proto 文件</strong></p>
<p>&nbsp;</p>
<p>1）<span></span>在目录 E:\ProtocolBuffers\protobuf-2.4.1\examples 中有个示例</p>
<p><span></span>可以先按官方的文档来熟悉一下。</p>
<p>2） 编写 .proto 文件</p>
<p><span></span>自已编写的 shapeobject.proto 文件</p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">package candee;</span></p>
<p><span style="color: #0055ff">option java_package = "com.example.candee";</span></p>
<p><span style="color: #0055ff">option java_outer_classname = "ShapeObjectProto";</span></p>
<p><span style="color: #0055ff">message DrawInfoPB {</span></p>
<p><span style="color: #0055ff"><br /></span></p>
<p><span style="color: #0055ff">message ColorVal {</span></p>
<p><span style="color: #0055ff">required int32r = 1;//int32 &nbsp;unsigned short</span></p>
<p><span style="color: #0055ff">required int32g = 2;</span></p>
<p><span style="color: #0055ff">required int32b = 3;</span></p>
<p><span style="color: #0055ff">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">required int32toolbarState = 1;// TOOLBAR_STATE</span></p>
<p><span style="color: #0055ff">required ColorValpenColor = 2;// 笔的颜色</span></p>
<p><span style="color: #0055ff">required int32penLineWidth = 3;// 用户设置画笔的宽度</span></p>
<p><span style="color: #0055ff">required ColorValwordColor = 4;// 字的颜色</span></p>
<p><span style="color: #0055ff">required int32wordLineWidth = 5;// 用户设置字的宽度</span></p>
<p><span style="color: #0055ff">required ColorValgraphColor = 6;// 图形的颜色</span></p>
<p><span style="color: #0055ff">required int32graph = 7;// 图形</span></p>
<p><span style="color: #0055ff">required int32graphLineWidth = 8;// 绘制图形的线宽</span></p>
<p><span style="color: #0055ff">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">message ShapeObjectPB {</span></p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">required DrawInfoPB drawInfoPB = 1;// 绘画信息</span></p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">message DrawPointPB {</span></p>
<p><span style="color: #0055ff">required int32 x1 = 1;</span></p>
<p><span style="color: #0055ff">required int32 y1 = 2;</span></p>
<p><span style="color: #0055ff">required int32 X2 = 3;</span></p>
<p><span style="color: #0055ff">required int32 y2 = 4;</span></p>
<p><span style="color: #0055ff">}</span></p>
<p><span style="color: #0055ff">repeated DrawPointPB drawPointPB = 2;// 绘画坐标</span></p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">optional string textPB = 3;// 编辑框文字信息</span></p>
<p><span style="color: #0055ff">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #0055ff">message DataPB {</span></p>
<p><span style="color: #0055ff">repeated ShapeObjectPB shapeObjectPB = 1;</span></p>
<p><span style="color: #0055ff">}</span></p>
<p><span style="color: #0055ff"><br /></span></p>
<p><strong><span style="color: #000000">第三步 编译 shapeobject.proto 文件，生成C++源文件</span></strong></p>
<p>&nbsp;</p>
<p>1）解压 E:\ProtocolBuffers\protoc-2.4.1-win32.zip</p>
<p>&nbsp; &nbsp;会生成 E:\ProtocolBuffers\protoc-2.4.1-win32\protoc.exe 编译文件。</p>
<p>2) 将 protoc.exe 考贝到 shapeobject.proto文件同一级目录中。</p>
<p><span></span>本目录为 E:\ProtocolBuffers\protobuf-2.4.1\examples</p>
<p>3）命令执行protoc 文件</p>
<p><span></span>在\examples\ 新建一个目录为 1\用来保存生成的C++源文件</p>
<p>在命令行下，执行<span style="color: #ff0000">protoc --cpp_out=1 shapeobject.proto</span></p>
<p><span></span>如图所示：</p>
<p><span><img src="http://hiphotos.baidu.com/harbinxxh/pic/item/76d59862ddc451da7c3d035fb6fd5266d1163243.jpg" small="0" alt="" /></span></p>
<p>&nbsp;4）生成的C++源文件</p>
<p>在E:\ProtocolBuffers\protobuf-2.4.1\examples<span style="color: #ff0000">\1</span> 目录中保存生成的文件</p>
<p>生成的文件：shapeobject.pb.cc shapeobject.pb.h</p>
<p>将这两个文件添加到你的功程中，就可以用户ProtocolBuffer了</p></div></td></tr></tbody></table><img src ="http://www.cppblog.com/colorful/aggbug/167012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-03-02 22:04 <a href="http://www.cppblog.com/colorful/archive/2012/03/02/167012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>