lua protobuff 不支持嵌套修改protoc-gen-lua
发表于2018-09-18
protobuff解决方法如下:
找到文件src/google/protobuf/message.cc在文件的第一个#include之上的一行,加入
#include<istream>
继续运行make,即成功通过。
sudopythonsetup.pybuild
sudopythonsetup.pyinstall
erlang数据库编码中文返回是<<>>,需要使用unicode:characters_to_list(Username)
数据库和erlang之间的编码统一使用utf8.
luaprotobuff不支持嵌套修改protoc-gen-lua:
1. #lua('localprotobuf=require"protobuf"\n')
替换成: lua('localprotobuf=require"protobuf/protobuf"\n')
2. #type_name=env.get_ref_name(field_desc.type_name).upper().replace('.','_')
替换成: type_name=env.get_ref_name(field_desc.type_name).upper()#这一行
3. #"local%s=protobuf.Descriptor();\n"%obj_name
替换成: "%s=protobuf.Descriptor();\n"%obj_name#这一行去掉local
4. #lua('local%s_pb=require("%s_pb")\n'%(i,i))
替换成: lua('local%s_PB=require("%s_pb")\n'%(i.upper(),i))#这一行PB大写
使用指定--plugin=protoc-gen-lua:
protoc --lua_out=./ --plugin=protoc-gen-lua="/Users/xinghua/Desktop/project_01_qipai/erlang_lua_probuff_ebin/protoc-gen-lua-master/plugin/protoc-gen-lua" *.proto
复合类型用法:
lua:
local msg = p_qipai_pb.createroom_s() msg.playerid = PlayerInfo:Instance().playerid msg.gameType = self.gameType msg.rule.lowsoces = 0 --rule是另外个message msg.createtype = createType --发送 self._NetHandler_CreateRoom = handler(self,self.NetCreateRoom) local pbdate = msg:SerializeToString() NetManager.SendNetMsg( ProtocID.Createroom_S , pbdate, ProtocID.Createroom_R , self._NetHandler_CreateRoom)
erlang:
{_,Playerid,GameType,Rule,Createtype} = p_qipai_pb:decode_createroom_s(D), {_,LowSoces} = Rule
来自:https://blog.csdn.net/u010665359/article/details/72843364