quick cocos2dx 是基于lua脚本的,因此要使用protobuf必须能让lua来序列化和反序列化数据
步骤
1 安装python2.7 从www.python.org中下载
2 下载protoc(http://protobuf.googlecode.com/svn/trunk)并编译出protoc.exe 我下载的是2.4.1版本,用vs2013进行编译,过程有点小小问题,不过顺利解决.
2.1 遇到min max无法识别( 在对应的文件加上 #include <algorithm>
2.2 遇到一个string 无法转换为string&& 的问题.传入的参数加上string&
2.3 生成的protoc.exe放到protobuf-2.4.1/src下
3 下载protoc-gen-lua
可以通过HG从服务器(hg clone https://code.google.com/p/protoc-gen-lua/)上下载最新的版本。
简单介绍一下里面的三个目录:
example 存放的一个示例协议,
plugin 将.proto协议转为LUA脚本需要的工具。要注意,这个工具是用PYTHON写的,所以后面我们需要安装PYTHON。
rotobuf这里存放了工程需要的文件。其中pb.c是C码文件。主要是在工程中引用,也可以编译成动态文件(.so)供LUA调用。其它LUA文件则需要引入到LUA工程中。
4、编译python版本的protobuf
在protobuf-2.4.1\python下运行python setup.py build,然后再执行python setup.py install。
5、制作转换协议的批处理
在protoc-gen-lua/plugin目录下编写批处理:s.bat,就下面一行代码。
@python "%~dp0protoc-gen-lua"
6 接着拷贝一份protoc.exe到protoc-gen-lua目录。第3步我们已经编译了出了protoc.exe。在协议转换中,我们需要使用他。
在protoc-gen-lua目录编写批处理:s.bat 来转换协议。(导出lua版的proto文件 --lua_out)
cd ./example
for %%i in (*.proto) do (
echo %%i
"..\protoc.exe" --plugin=protoc-gen-lua="..\plugin\s.bat" --lua_out=. %%i
)
echo end
pause
至此,完成了protobuf文件的lua版本导出,目的达成.接下来就要在lua中decode和encode了.