项目使用 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