lua protobuf 获取pb长度为0的bug

项目使用 protoc-gen-lua 来生成lua的pb在lua中调用。
但遇到如下问题:

1.获取pb长度为0,实际上pb中有数据
message gameinfo
{
    optional tableinfo tinfo =2;
    optional betinfo binfo =3; //结算的时候才会
}

解决方法,添加一个无用字段

message gameinfo
{
    optional int32 result = 1;
    optional tableinfo tinfo =2;
    optional betinfo binfo =3; //结算的时候才会
}

2.获取不到对象的属性
message gameinfo
{
    optional int32 result = 1;
    optional tableinfo tinfo =2;
    optional betinfo binfo =3; //结算的时候才会
}

如上,获取tinfo,lua编译器崩溃

解决方法:在_pb文件中把下划线的对象属性的下划线删除

GAMEINFO_BINFO_FIELD.name = "binfo"
GAMEINFO_BINFO_FIELD.full_name = ".progame.gameinfo.binfo"
GAMEINFO_BINFO_FIELD.number = 3
GAMEINFO_BINFO_FIELD.index = 2
GAMEINFO_BINFO_FIELD.label = 1
GAMEINFO_BINFO_FIELD.has_default_value = false
GAMEINFO_BINFO_FIELD.default_value = nil
GAMEINFO_BINFO_FIELD.message_type = _BETINFO
GAMEINFO_BINFO_FIELD.type = 11
GAMEINFO_BINFO_FIELD.cpp_type = 10

猜你喜欢

转载自blog.csdn.net/weixin_34349320/article/details/86847561
今日推荐