
【版本说明】
python:2.7.5
protobuf:2.5.0
lua:5.1.5
protoc-gen-lua:latest
cocos2d-x:3.2
【安装步骤】
1. python/lua/cocos2d-x环境默认已安装
安装protobuf
进入protobuf-2.5.0\python,执行:
| 1 2 3 | python setup.py build python setup.py test python setup.py install |
2.protoc-gen-lua解压放置到某个目录下,假定为c:\
protoc-gen-lua\plugin下创建protoc-gen-lua.bat,文件内容为:
1- gen lua\plugin\protoc lua 3. 通过proto生成lua,命令为:
|
【集成步骤】
1. 加入pb.c文件,在frameworks\cocos2d-x\external\lua下创建protobuf目录,copy pb.c文件至此
win32下编译出错,修改pb.c文件如下:
#ifndef _WIN32 //添加 #include <endian.h> #endif //添加 2. protobuf目录下加入pb.h文件:
3 4 5 6 7 8 9 10 11 12 13 14#ifndef __LUA_PROTOBUF_H_ #define __LUA_PROTOBUF_H_ #include "lua.h" #if __cplusplus extern "C" { #endif int luaopen_pb(lua_State * L); #if __cplusplus } #endif #endif 3.修改lua_extensions.c文件:
14 15 16 17 18{ #endif / / socket #include "luasocket/luasocket.h" #include "luasocket/mime.h" #include "lpack/lpack.h" #include "cJson/lua_cJson.h" #include "protobuf/pb.h" //添加 static luaL_Reg luax_exts[] = { { "cJson" ,luaopen_cJson_safe}, "pack" "pb" 添加 "socket.core" "mime.core" }; 4.将protoc-gen-lua\protobuf下的lua文件放置到项目的搜索目录中
【重要说明】
protoc-gen-lua这个坑爹的玩意儿不支持嵌套message,如果嵌套的message在同一个proto里面是可以的,但是如果在不同的文件里面,通过import的方式引用就有问题了。
可以通过修改生成lua的python脚本解决这个问题,方法如下:
@H_212_403@1. 首先定义的被引用的proto文件头要加上package,如:
5
... } 2.在引用的proto文件中修改为这样:
6import "Base.proto" message PlayerMsg { optional pb.BaseMsg msg = 1 ; ... 3.修改protoc-gen-lua\plugin\protoc-gen-lua文件: if fIEld_desc.HasFIEld( 'type_name' ): type_name env.get_ref_name(fIEld_desc.type_name).upper() 这一行 fIEld_desc. type = FDP.TYPE_MESSAGE: code_gen_message(message_descriptor,env,containing_type = None env.enter(message_descriptor.name) full_name env.get_local_name() obj_name full_name.upper().replace( '.' '_' ) env.descriptor.append( "%s = protobuf.Descriptor();\n" % 这一行去掉local ) lua Writer() write_header(lua) lua( 'local protobuf = require "protobuf"\n' for i in includes: 'local %s_PB = require("%s_pb")\n' (i.upper(),i)) 这一行PB大写 "module('%s_pb')\n" env.filename) 然后就可以了。
总结以上是内存溢出为你收集整理的cocos2d-x中集成protoc-gen-lua全部内容,希望文章能够帮你解决cocos2d-x中集成protoc-gen-lua所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)