lua下使用protobuf
来源:互联网 发布:关于les的歌网络歌手 编辑:程序博客网 时间:2024/06/06 07:29
lua下使用protobuf
- 博客分类:
- lua
luaprotobufgooglewindows
下载地址:
protobuf:https://code.google.com/p/protobuf/downloads/list下载最新的protobuf 我这里下载的是2.5.0
protoc-gen-lua:https://github.com/sean-lin/protoc-gen-lua下载master分支
Linux下安装:
protobuf:
解压后到目录
一般protoc就会安装到/usr/local/bin下
安装python支持(Linux下可选,装也没啥问题)
protoc-gen-lua:
解压后到目录
这里可能会报个lua5.1的error, 生成pb.so就OK, 无视ERROR了, 使用时请将pb.so加入package.cpath中, 也可以放在安装后lua的lib下,我的是在/usr/local/lib/lua/5.1/
那直接将pb.so放到该目录, 以后项目也不用特别新加一句package.cpath=...了
这样就能使用命令
生成lua的protobuf支持文件了
到protoc-gen-lua的example目录可以试试
这时候查看目录应该生成了一个person_pb.lua文件,
运行下测试代码
查看输出
Windows下:
protobuf:
解压后到目录
到目录vsprojects下打开protobuf.sln项目,编译,会在vsprojects/Debug或者vsprojects/Release生成protoc.exe执行文件, 放到某个目录加入到PATH环境变量中...
到protobuf目录下的python目录,和linux下一样安装, 请确认你的电脑安装了python,并将python执行文件所在目录加入到了PATH;python建议安装2.X最新系列
windows下安装protobuf的python支持是必须的
tips:不选中任何文件的情况下,在目录的空白位置shift+右键会出现"在此处打开命令行窗口",然后你懂的
重点是protoc-gen-lua了:
github下面下载出来的文件格式是linux下的utf-8, 可能得转成PC下的GB...主要针对protoc-gen-lua\protobuf\pb.c
windows下将pb.c几个位置改一下
改成
函数下的
要改成
函数
改成
OK,改造完毕, VS新建项目->win32项目->下一步->应用程序类型:点选dll, 附加符号:先"导出符号", 后"空项目"->完成
将pb.c加入到项目中, 生成解决方案
到目录下会发现生成了YOURNAME.dll
将之重命名为pb.dll
如果要做到项目中都可以使用的话可以放到lua安装目录的clib下,不然自己加到package.cpath中
到protoc-gen-lua的plugin目录
建立两个脚本文件, 注意改成你自己的目录, Win下做开发就少放在含有中文的目录下了
1. build.bat
2.make_proto.bat
OK, 以后就只要将这个make_proto.bat放到proto所在的目录运行下就能得到.lua的文件了
可以用example下的例子做测试
PS:关于pb.so pb.dll名称主要是protoc-gen-lua里面有个protobuf.lua的函数有个require "pb"
转载请标明出处:http://ziplee.iteye.com/blog/2078851
@HAPPY CODINE@
protobuf:https://code.google.com/p/protobuf/downloads/list下载最新的protobuf 我这里下载的是2.5.0
protoc-gen-lua:https://github.com/sean-lin/protoc-gen-lua下载master分支
Linux下安装:
protobuf:
解压后到目录
- ./configure && make && sudo make install
一般protoc就会安装到/usr/local/bin下
安装python支持(Linux下可选,装也没啥问题)
- cd python
- python setup.py build
- python setup.py install
protoc-gen-lua:
解压后到目录
- cd protobuf
- make
这里可能会报个lua5.1的error, 生成pb.so就OK, 无视ERROR了, 使用时请将pb.so加入package.cpath中, 也可以放在安装后lua的lib下,我的是在/usr/local/lib/lua/5.1/
那直接将pb.so放到该目录, 以后项目也不用特别新加一句package.cpath=...了
- cd /usr/local/bin && sudo ln -s /YOURPATH/protoc-gen-lua/plugin/protoc-gen-lua
这样就能使用命令
- protoc --lua_out=./ foo.proto
生成lua的protobuf支持文件了
到protoc-gen-lua的example目录可以试试
- protoc --lua_out=./ person.proto
这时候查看目录应该生成了一个person_pb.lua文件,
运行下测试代码
- lua test.lua
查看输出
Windows下:
protobuf:
解压后到目录
到目录vsprojects下打开protobuf.sln项目,编译,会在vsprojects/Debug或者vsprojects/Release生成protoc.exe执行文件, 放到某个目录加入到PATH环境变量中...
到protobuf目录下的python目录,和linux下一样安装, 请确认你的电脑安装了python,并将python执行文件所在目录加入到了PATH;python建议安装2.X最新系列
windows下安装protobuf的python支持是必须的
tips:不选中任何文件的情况下,在目录的空白位置shift+右键会出现"在此处打开命令行窗口",然后你懂的
重点是protoc-gen-lua了:
github下面下载出来的文件格式是linux下的utf-8, 可能得转成PC下的GB...主要针对protoc-gen-lua\protobuf\pb.c
windows下将pb.c几个位置改一下
- #include <endian.h>
改成
- #ifndef WIN32
- #include <endian.h>
- #else
- #pragma comment(lib,"lua5.1.lib")
- #endif
- static int struct_unpack(lua_State *L){
函数下的
- buffer += pos;
- uint8_t out[8];
要改成
- uint8_t out[8];
- buffer += pos;
函数
- int luaopen_pb(lua_State *L)
改成
- __declspec(dllexport) int luaopen_pb(lua_State *L)
OK,改造完毕, VS新建项目->win32项目->下一步->应用程序类型:点选dll, 附加符号:先"导出符号", 后"空项目"->完成
将pb.c加入到项目中, 生成解决方案
到目录下会发现生成了YOURNAME.dll
将之重命名为pb.dll
如果要做到项目中都可以使用的话可以放到lua安装目录的clib下,不然自己加到package.cpath中
到protoc-gen-lua的plugin目录
建立两个脚本文件, 注意改成你自己的目录, Win下做开发就少放在含有中文的目录下了
1. build.bat
- @python E:/protobuf/protoc-gen-lua/plugin/protoc-gen-lua
2.make_proto.bat
- for %%i in (*.proto) do (
- protoc --lua_out=./ --plugin=protoc-gen-lua="E:/protobuf/protoc-gen-lua/plugin/build.bat" %%i
- )
OK, 以后就只要将这个make_proto.bat放到proto所在的目录运行下就能得到.lua的文件了
可以用example下的例子做测试
PS:关于pb.so pb.dll名称主要是protoc-gen-lua里面有个protobuf.lua的函数有个require "pb"
转载请标明出处:http://ziplee.iteye.com/blog/2078851
@HAPPY CODINE@
haproxy的TCP负载均衡(第4层) | windows下grep和awk
- 2014-06-12 17:21
- 浏览 5406
- 评论(5)
- 分类:编程语言
- 相关推荐
评论
5 楼 sjmin1987 2015-01-28
sjmin1987 写道
- message BidRequest {
- required int32 version = 1;
- message AdzInfo {
- required uint32 id = 1;
- }
- }
你这样子的,解包数据后,怎么获限AdzInfo.id
我这里怎么试也获限不到,,
请教.
已自已解决
4 楼 sjmin1987 2015-01-21
- message BidRequest {
- required int32 version = 1;
- message AdzInfo {
- required uint32 id = 1;
- }
- }
你这样子的,解包数据后,怎么获限AdzInfo.id
我这里怎么试也获限不到,,
请教.
3 楼 lizp297156486 2014-11-13
shicheng 写道
按您的方法操作了,但是pb.c这一步一直编译不过去,但是也pb.c本身一个错误也没有报,就是报了一堆的cstdlub等c++类库的错误,不知道是我哪里有问题,求赐教,万分感谢
应该是windows标准库冲突的问题,关闭某些编译选项就行,可以贴出来一下
2 楼 shicheng 2014-11-07
按您的方法操作了,但是pb.c这一步一直编译不过去,但是也pb.c本身一个错误也没有报,就是报了一堆的cstdlub等c++类库的错误,不知道是我哪里有问题,求赐教,万分感谢
1 楼 aigo 2014-08-05
非常感谢楼主分享!!
阅读全文
0 0
- lua下使用protobuf
- lua&protobuf使用
- 笔记:Linux环境下lua脚本层使用protobuf
- cocos2dx使用lua和protobuf
- cocos2dx使用lua和protobuf
- cocos2dx使用lua和protobuf
- cocos2dx使用lua和protobuf
- cocos2dx使用lua和protobuf
- protobuf 在lua中的使用
- Protobuf-Lua 中使用 Enum
- lua环境中使用protobuf
- window下使用protobuf
- windows 下 protobuf 使用
- python下使用protobuf
- vs下使用protobuf
- windows下使用protobuf
- 在lua环境中使用protobuf ,编译protobuf文件
- 在lua环境中使用protobuf
- Latex编辑论文入门经验总结(1)
- Hibernate--单向多对一&&单向一对多
- A星寻路学习记录
- 自定义 MPVolumeView 外观
- Unity导出xcode项目
- lua下使用protobuf
- 转来的 cuda makefile 写法学习
- 移动购物APP设计与实现
- redis+twemproxy+socket访问
- 区块链技术应用在金融领域之大数据风控
- java和python编写二叉树
- 从事性能测试工作需要掌握要学习的知识
- 玩机:解决小米手机锁屏忘记密码无法解锁
- linux下用sox批量将pcm文件加wav头、批量修改采样率、切音频
参考知识库