slua 集protobuf
2017-03-27 09:38
417 查看
Unity3D-SLua+ProtocolBuffers构建说明.因为项目使用lua与protocal buffer结构的架构。所以近来对lua与protocal
buffer 进行了些深入的了解。对构建slua + protocal buffer的体会进行一些记录,以供大家参考。如何编译Android v7a和x86平台以及iOS arm64平台的lua库请看这里《luajit-slua-protoc编译动态库》。
protocolbuf 地址 https://github.com/sean-lin/protoc-gen-lua
在mac下打bundle库用lua51简单点,直接把lua51的代码和slua.c+pb.c文件塞进xcode。unity4.6.x需要设置architecture为Universal,unity5设置为standard architecture(64bit),否则u3d加载动态库失败。
我使用Python来使用protocal buff 所以,需要安装python的google.protobuf。
具体安装步骤看这里:http://www.tuicool.com/articles/VfQfM3
还需要安装protoc-gen-lua部分的程序可以参考这里:http://blog.csdn.net/sunshine7858/article/details/9260671
lua向c#传递protobuf协议字符串。由于c#字符串编码使用unicode,与lua的protoc-gen-lua序列化后的字符串编码格式不一样,我大概知道是因为protoc中c部分写入字符串时是直接使用char形式写入,没有进行任何编码导致的。所以当protoc-lua序列化后的字符串传入时slua里的Mashal.PtrToStringAnsi会报空,换成auto也无济于事。
同样的问题也出现在了c#向lua传递协议字符串上。
这需要对slua进行修改。修改的目的还是将字符串传入c#或者lua,但我们要换一种方式传,原先使用lua_pushstring传字符串,改用lua_pushlstring以byte[]形式传入。如何修改才更完美呢。使用自定义类比如protobuff类,在slua里增加protobuff的重载方法,pushValue,checkType,typePushMap都需要增加,typePushMap主要是为了委托传参部分。这样当c#使用protobuff向lua传参时,以及lua使用调用带有protobuff类型c#方法时就能自动识别protobuff并得到正确的结果。
转载请注明出处:http://www.luzexi.com
QA protoc-gen-lua: program not found or is not executable 错误
要在 /usr/local/bin 下面做一个ln -s 目录/protoc-gen-lua protoc-gen-lua 的软链接
buffer 进行了些深入的了解。对构建slua + protocal buffer的体会进行一些记录,以供大家参考。如何编译Android v7a和x86平台以及iOS arm64平台的lua库请看这里《luajit-slua-protoc编译动态库》。
1.lua51+slua+protobuf打动态库
protocolbuf 地址 https://github.com/sean-lin/protoc-gen-lua在mac下打bundle库用lua51简单点,直接把lua51的代码和slua.c+pb.c文件塞进xcode。unity4.6.x需要设置architecture为Universal,unity5设置为standard architecture(64bit),否则u3d加载动态库失败。
2.protobuf转换工具环境
我使用Python来使用protocal buff 所以,需要安装python的google.protobuf。具体安装步骤看这里:http://www.tuicool.com/articles/VfQfM3
还需要安装protoc-gen-lua部分的程序可以参考这里:http://blog.csdn.net/sunshine7858/article/details/9260671
3.protobuf序列化后的与c#通信
lua向c#传递protobuf协议字符串。由于c#字符串编码使用unicode,与lua的protoc-gen-lua序列化后的字符串编码格式不一样,我大概知道是因为protoc中c部分写入字符串时是直接使用char形式写入,没有进行任何编码导致的。所以当protoc-lua序列化后的字符串传入时slua里的Mashal.PtrToStringAnsi会报空,换成auto也无济于事。同样的问题也出现在了c#向lua传递协议字符串上。
这需要对slua进行修改。修改的目的还是将字符串传入c#或者lua,但我们要换一种方式传,原先使用lua_pushstring传字符串,改用lua_pushlstring以byte[]形式传入。如何修改才更完美呢。使用自定义类比如protobuff类,在slua里增加protobuff的重载方法,pushValue,checkType,typePushMap都需要增加,typePushMap主要是为了委托传参部分。这样当c#使用protobuff向lua传参时,以及lua使用调用带有protobuff类型c#方法时就能自动识别protobuff并得到正确的结果。
转载请注明出处:http://www.luzexi.com
QA protoc-gen-lua: program not found or is not executable 错误
要在 /usr/local/bin 下面做一个ln -s 目录/protoc-gen-lua protoc-gen-lua 的软链接
相关文章推荐
- cocos2dx lua集成protobuf
- 在lua环境中使用protobuf
- 在lua环境中使用protobuf
- 在lua环境中使用protobuf
- 解决protobuf-lua导入其他proto的BUG
- 解决protobuf-lua导入其他proto的BUG
- lua下使用protobuf
- 在lua环境中使用protobuf
- 在lua环境中使用protobuf
- SLua 绑定 Protobuf-Lua (protoc-gen-lua) 在SLua中使用 Protobuf
- 在lua环境中使用protobuf
- cocos2dx使用lua和protobuf
- Protobuf Lua 版本 和 C#版本序列化数据不一致
- protobuf-lua-gen 中使用 bytes
- ctags支持lua和protobuf
- cocos2dx使用lua和protobuf
- cocos2dx 3.x以上版本 lua中使用protobuf
- 在lua环境中使用protobuf
- unity slua整合帅气的lua-pb解析protobuf
- cocos2d-x lua 中使用protobuf并对http进行处理