在quick cocos2dx中增加解析protobuf的扩展

导出了lua版的protobuf文件以后,就要给quick cocos2dx使用了(其实给cocos2dx的lua版本使用也是同样的道理)

1 根据自己的quick版本查找lua扩展目录,我用的是3.2rc版,

目录在 quick-cocos2dx-3.2rc0/quick/lib/lua_extensions在此新建protobuf文件夹,免得日后混乱

把protoc-gen-lua/protobuf/pb.c文件拷贝至此文件夹下

2 修改lua_extensions/lua_extensions.c 这个配置文件,以支持最新添加的protobuf

其实只加了2行代码,由于整个配置比较小,全贴过来了


#include "lua_extensions.h"

#if __cplusplus
extern "C" {
#endif

// cjson
#include "cjson/lua_cjson.h"

// zlib
#include "zlib/lua_zlib.h"

// lpack
#include "lpack/lpack.h"

#ifndef WP8
// socket
#include "socket/luasocket.h"
#include "socket/mime.h"
#include "socket/socket_scripts.h"

// filesystem
#include "filesystem/lfs.h"
#endif

// lsqlite3
#include "lsqlite3/lsqlite3.h"

//protobuf
#include "protobuf/pb.c"   

static luaL_Reg luax_exts[] = {
#if CC_USE_JSON
    {"cjson", luaopen_cjson_safe},
#endif
    {"zlib", luaopen_zlib},
    {"pack", luaopen_pack},
#ifndef WP8
    {"socket.core", luaopen_socket_core},
    {"mime.core", luaopen_mime_core},
    {"lfs", luaopen_lfs},
#endif
#if CC_USE_SQLITE
    {"lsqlite3", luaopen_lsqlite3},
#endif
    {NULL, NULL}
};

void luaopen_lua_extensions(lua_State *L)
{
    // load extensions
    luaL_Reg* lib = luax_exts;
    lua_getglobal(L, "package");
    lua_getfield(L, -1, "preload");
    for (; lib->func; lib++)
    {
        lua_pushcfunction(L, lib->func);
        lua_setfield(L, -2, lib->name);
    }
    lua_pop(L, 2);

    // load extensions script
#ifndef WP8
	luaopen_socket_scripts(L);
	luaopen_pb(L);      // add protobuf extension register
#endif
}

#if __cplusplus
} // extern "C"
#endif

重新编译play3,需要在libquick/lua_extensions里面添加刚刚加入的protobuf/pb.c这个文件


3 把lua的库也放到quick中

protoc-gen-lua/protobuf/ 这个目录下除了有pb.c以外还有*.lua文件。用来支持proto转码后的文件调用。

复制protoc-gen-lua/protobuf文件夹到自己的项目目录下面。

由于win平台下并没有endian.h这个文件,因此这句需要注释掉,否则编译不过,最好作如下修改

#ifdef _WIN32
#else
    #ifdef _WIN64
    #else
        #ifdef _ALLBSD_SOURCE
            #include <machine/endian.h>
        #else
            #include <endian.h>
        #endif
    #endif
#endif

编译成功以后就可以开始尝试读取和解析protobuf的内容了。

此至,在quick-cocos2dx中就具解析protobuf的能力了。接下来是尝试lua的demo.


PS:在网上看了很多关于quick-cocos2dx加入protobuf的文章,发现大多数不可行,于是自己折腾一番,终于有点效果。

特记录下来,给大家参考,然后希望后来的quick版本能够自带此功能。

不过据说这个会遇到些嵌套的问题,这个日后再解决,吐糟:网上好多风云的pbc工程加入的文章都是没有完整工程的,无法验证。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值