Quick-Cocos2d-x 集成 Google protobuf 方法
2015-01-19 18:49
615 查看
本文将向您介绍Quick-Cocos2d-x集成google protobuf的方法。
第一步 需要最新的protobuf 类库和解析程序。
下载地址:https://github.com/sean-lin/protoc-gen-lua
git clone https://github.com/sean-lin/protoc-gen-lua.git 到任意的一个地方
然后,可以得到重要的两个目录
第二步, 需要使用protoc —lua_out=. 这种方法, 将我们自己的*.proto 的文件解析成lua文件
plugin目录是提供将buffer 文件解析成lua 版本的类库, 需要python 支持。 如果已经编译了google 官方的protoc 那个程序, 只需要在系统PATH环境变量总追加plugin目录就好:
关于protoc的编译另请google .
如果解析不出lua文件来, 可以手动志信一下plugin/protoc-gen-lua的程序, 他应该是+x 的权限(chmod +x plugin/protoc-gen-lua)
细节的安装步骤可以参考 https://code.google.com/p/protoc-gen-lua/
第三步 , 将protobuf 集成到quick 中
protoc-gen-lua/protobuf/ 目录就是要编译到quick-cocos2d-x目录里面的部分。
现在, 我们只需要 protoc-gen-lua/protobuf/pb.c 这个文件
先确定自己的quick-cocos2d-x lua扩展目录:
所有lua 的c/c++现成扩展,都可以直接放到这里。
将pb.c这个文件复制到 lua_extension目录下, 最好独立一个目录, 免得扩展多了乱。
这是我的目录结构:
然后开始修改扩展程序配置文件, lua_extensions.c
路径为:
目前是一个不足60行的小文件, 我打算全部贴进来:
至此 , protobuf 扩展部分就算扩展完成了。
确认是否成功支持 , 可以在quick 项目最先被调用的lua文件中追加 require "pb" 做测试。
*但这时候通过protoc 转码后得到的lua文件还不能被解析。
第四步 从项目中包含protobuf的 lua库
protoc-gen-lua/protobuf/这个目录下面, 还有大量的.lua文件, 是用来支持proto转码后的文件解析调用的。 不能少了这些文件。
复制protoc-gen-lua/protobuf文件夹 到项目中 scripts目录下。
目录结构应该是这样的:
然后, 需要告诉框架,从哪里可以引用到它。
修改main.lua 在require("appxxxxxx") 上面 , 加入下面的代码:
这个方法, 能保证程序在被编译到手机之后仍然可以继续访问这个库。
***千万别把转码的proto文件放到[PROJECT]/scripts/protobuf 目录里面.不信可以试试。
现在, 项目支持protobuf 文件的解析了。
第五步 重新编译player-x
如果不习惯用player-x调试, 这个步骤不是必须的。
进入player-x qt源码目录 :
使用qmake 文件执行quick-x.pro 文件
继续:
make
等待结束, 将得到的quick-x-player文件,
放到:quick-cocos2d-x/player/bin/mac/ 目录下, 这样sublime text 装QuickXDev 扩展的直接可以用。
**如果是mac os 10.9 系统, 可能编译不过去player-x程序。 我遇到了这个问题。
会提示错误 pb.c:28:10: fatal error: 'endian.h' file not found
如果错误信息相同, 修改文件:
查找行:
临时变更为:
然后重新编译 player-x
make 就足够了
make
**player-x 编译完毕后, 千万要将endian.h 引用改回原来的 #include <endian.h> , 否则打包到手机的时候又回提示文件找不到了。
原帖地址:http://www.cocoachina.com/bbs/read.php?tid=202657
来源网址:http://www.cocoachina.com/gamedev/cocos/2014/0525/8538.html
第一步 需要最新的protobuf 类库和解析程序。
下载地址:https://github.com/sean-lin/protoc-gen-lua
git clone https://github.com/sean-lin/protoc-gen-lua.git 到任意的一个地方
然后,可以得到重要的两个目录
plugin目录是提供将buffer 文件解析成lua 版本的类库, 需要python 支持。 如果已经编译了google 官方的protoc 那个程序, 只需要在系统PATH环境变量总追加plugin目录就好:
如果解析不出lua文件来, 可以手动志信一下plugin/protoc-gen-lua的程序, 他应该是+x 的权限(chmod +x plugin/protoc-gen-lua)
细节的安装步骤可以参考 https://code.google.com/p/protoc-gen-lua/
第三步 , 将protobuf 集成到quick 中
protoc-gen-lua/protobuf/ 目录就是要编译到quick-cocos2d-x目录里面的部分。
现在, 我们只需要 protoc-gen-lua/protobuf/pb.c 这个文件
先确定自己的quick-cocos2d-x lua扩展目录:
将pb.c这个文件复制到 lua_extension目录下, 最好独立一个目录, 免得扩展多了乱。
这是我的目录结构:
路径为:
确认是否成功支持 , 可以在quick 项目最先被调用的lua文件中追加 require "pb" 做测试。
*但这时候通过protoc 转码后得到的lua文件还不能被解析。
第四步 从项目中包含protobuf的 lua库
protoc-gen-lua/protobuf/这个目录下面, 还有大量的.lua文件, 是用来支持proto转码后的文件解析调用的。 不能少了这些文件。
复制protoc-gen-lua/protobuf文件夹 到项目中 scripts目录下。
目录结构应该是这样的:
修改main.lua 在require("appxxxxxx") 上面 , 加入下面的代码:
***千万别把转码的proto文件放到[PROJECT]/scripts/protobuf 目录里面.不信可以试试。
现在, 项目支持protobuf 文件的解析了。
第五步 重新编译player-x
如果不习惯用player-x调试, 这个步骤不是必须的。
进入player-x qt源码目录 :
make
等待结束, 将得到的quick-x-player文件,
放到:quick-cocos2d-x/player/bin/mac/ 目录下, 这样sublime text 装QuickXDev 扩展的直接可以用。
**如果是mac os 10.9 系统, 可能编译不过去player-x程序。 我遇到了这个问题。
会提示错误 pb.c:28:10: fatal error: 'endian.h' file not found
如果错误信息相同, 修改文件:
make 就足够了
make
**player-x 编译完毕后, 千万要将endian.h 引用改回原来的 #include <endian.h> , 否则打包到手机的时候又回提示文件找不到了。
原帖地址:http://www.cocoachina.com/bbs/read.php?tid=202657
来源网址:http://www.cocoachina.com/gamedev/cocos/2014/0525/8538.html
相关文章推荐
- quick-cocos2d-x 集成 google protobuf 方法
- quick-cocos2d-x 集成 google protobuf 方法
- 集成libevent,google protobuf的RPC框架
- [寒江孤叶丶的Cocos2d-x之旅_35]在Cocos2d-Lua中使用ProtoBuf (Xcode配置方法)
- quick-cocos2dx--集成谷歌protobuf与云风pbc项目
- arm-linux-gcc-4.4.3交叉编译google的protobuf。以及使用方法
- 在Cocos2d-Lua中使用ProtoBuf(Xcode配置方法)
- [寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)
- DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffers)的具体方法
- 简单介绍google protobuf rpc框架使用方法
- 利用Jersey和Google ProtoBuf 集成Spring搭建REST服务
- C++序列化方法 参考google protobuf
- 在Cocos2d-Lua中使用ProtoBuf (Xcode配置方法)
- DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffers)的具体方法
- google.protobuf.message.DecodeError: Truncated message. 解决方法
- DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffers)的具体方法
- 集成libevent,google protobuf的RPC框架
- Google的Protobuf安装及使用笔记一
- google ProtoBuf开发者指南
- 一种自动反射消息类型的 Google Protobuf 网络传输方案