cocos2dx中protobuf的lua使用
一、protobuf常规使用。 1 环境:win7-64机, 安装好python2.7,vs2013,cocos2dx-3.1.1,protobuf-2.6.1 2 准备:protobuf 下载地址:官方https://github.com/google/protobuf 我的:http://download.csdn.net/detail/c471961491/9279185 protoc 下载地址: 官方 https://github.com/sean-lin/protoc-gen-lua 我的:http://download.csdn.net/detail/c471961491/9279199 3 感谢一下作者提供的帮助(参考文献) http://blog.csdn.net/mergerly/article/details/16350871 在lua环境中使用protobuf http://blog.csdn.net/weyson/article/details/17024325 cocos2dx使用lua和protobuf http://ziplee.iteye.com/blog/2078851 lua下使用protobuf http://bbs.csdn.net/topics/390930176 csdn论坛 http://www.cocoachina.com/bbs/read.php?tid=202657&keyword=proto cocos论坛
步骤一: 将protobuf和protoc-gen-lua解压到桌面(本人是解压到桌面的) 进入protobuf/vsprojects 用vs进行编译。生成的protoc.exe放到protobuf/src下 步骤2: 打开cmd,进入目录protobuf/python下,运行命令python setup.py build,之后等待下载完成,下载中出错就重新来吧(我是这样做的)。 下载完成之后运行命令python setup.py install 步骤3: 制作转换协议 在protoc-gen-lua/plugin目录下编写批处理文件protoc-gen-lua.bat 、、、、、、、、、、、、、、、、、、、、、、、、、 @python <你的路径>protoc-gen-luapluginprotoc-gen-lua 、、、、、、、、、、、、、、、、、、、、、、、、、、 在protoc-gen-lua目录编写批处理文件 buildproto.bat 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 rem 切换到.proto协议所在的目录 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 luascript是自己新建的文件夹,用来存放 .proto 文件。在该文件夹下自己新建一个测试的proto文件 步骤4: 双击运行 buildproto.bat 文件,会在luascript文件加下就会生成一个proto对应的lua文件。假如生成失败了,在你的proto文件中所有的中文都删掉,包括注释,再试下。
接下来就是如何运用生成的lua文件了 步骤1: 自己生成一个cocos-lua工程(不解释) 步骤2: 把protoc-gen-lua/protobuf文件夹下的所有lua文件添加到工程 步骤3: 在<工程目录>frameworkscocos2d-xexternallua下新建protobuf文件夹,在该文件夹下加入pb.c文件。pb.c文件在protoc-gen-luaprotobuf 下 步骤4: 打开lua_extensions.c文件 添加 :#include "protobuf/pb.c" void luaopen_lua_extensions(lua_State *L)
步骤5: 修改pb.c文件 1 增加平台判断 #ifndef _WIN32 2static int struct_unpack(lua_State *L) 中两语句位置互换 uint8_t out[8]; 3__declspec(dllexport) int luaopen_pb(lua_State *L) 增加语句修饰 步骤6:导出proto的lua文件加入到工程 例子:如下使用 require "Login_pb" --这个是对用proto导出的对应lua文件 local charReq =Login_pb.LoginCharReq() 步骤7: 在main.lua的开头加上 package.path = package.path .. ';../protobuf/?.lua' 两句话
步骤8: 运行工程。无错结束
ps:遇见没有pb.lua文件错误,查看下是否和上面步骤一致(我就遇见了。通过上面方法就好了)。如果还是有错,就看看参考文档吧 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |