因为项目的需求,通信打算使用Protobuf,像我这种菜鸟,那用过Protobuf啊,只是听说过,于是开搞吧没办法,在技术群里问,基本没什么人叼你,会的认为你问的简单,想帮你的人可能恰恰不会,于是Do It Yourself,你懂得~
昨天搞了基本上一天了,在VS下好搞,但是编译到安卓上就有点吃力,哎,主要是自己太菜,没办法!
1、下载Protobuf,版本2.5.0
地址:http://code.google.com/p/protobuf/downloads/list
下载下图中文件,解压。我下载的是红框那个,估计蓝框的都能用。
解压后文件为:
2、、在VS 下使用Protobuf
解压后文件如上图所示,打开vsprojects文件夹,打开protobuf.sln文件(我是用VS2010打开生成的,VS2008好像不行,我同事用的08不行),
按图生成解决方案,生成以下几个重要文件
3、在Vs下测试使用
把上面生成的几个.lib文件,复制到我们Cocos2d-x的Debug文件夹中,
再把src文件夹下的google文件夹复制到我们项目的Classes 文件夹中,
设置项目属性,添加链接
4、下面我们使用生成的.lb文件和.exe文件生成我们自定义的结构体
新建个文件夹把需要的文件拷贝进去
新建个txt文件,文件内容如下,然后保存再把后缀名改为.proto
这是个测试文档,具体用的时候我们定义我们的数据,至于其中的语法,大家自己搜下吧。
然后我们需要用protoc.exe生成.pb.cc和.pb.h文件
在控制台进入protoc.exe所在文件夹,输入命令:protoc -I=D:\ProtobufTest --cpp_out=D:\ProtobufTest D:\ProtobufTest\person.proto
如下图:
其中D:\ProtobufTest 是protoc.exe所在路径 cpp_out后面的两个分别是生成的.pb.cc和.pb.h存放路径和目标文件person.proto的路径,点击回车发现,在目录下生成了对应的
.pb.cc和.pb.h文件,打开person.pb.h发现其中引用路径为:
#include <google/protobuf/stubs/common.h>
所以我们需要在我们的Classes中粘贴进去google文件夹。
5、这样我们就可以再VS下使用了。
引用:
#include "person.pb.h"
#include <iostream>
#include <fstream>
简单使用,详细的使用大家自己查下吧,我也不是很懂,我只是调通了,具体是使用还没研究呢。
//=======================Protobuf==测试============
// 设置数据, 并序列化到文件
Test::Person person;
person.set_id( 123 );
person.set_name( "abc" );
person.set_email( "abc@163.com" );
std::string out=person.SerializeAsString();
6、Protobuf在安卓下是没有的,Protobuf类似于第三方的插件,需要我们编译到项目中去
具体请参考下一篇文章:
http://blog.csdn.net/sharkmarine/article/details/23543939