青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

戰魂小筑

討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

https://code.google.com/p/protoc-gen-lua/ 下載網易兄弟寫的lua的protobuf插件(網易都把pb給弄完了,as3的也是他們寫的..)

 

編譯python版的protobuf模塊

https://code.google.com/p/protobuf/downloads/list 下載官方的原生版本protobuf, 這里發文時使用的是2.4.1版本

編譯出protoc執行文件, 放一份在protobuf-2.4.1\src\下

下載python2.7版本, 在protobuf-2.4.1\python下運行python setup.py install(如果找不到python請給python絕對路徑)

這一步, python會下一個蛋( 真的是一個python的egg文件 ), 然后編譯出python版本的protobuf模塊放置在python下

 

制作protoc-gen-lua的批處理

放一份protoc在protoc-gen-lua的plugin目錄

編寫批處理:protoc-gen-lua.bat

@python "%~dp0protoc-gen-lua"

 

協議目錄生成腳本

在你需要放置協議的目錄編寫如下批處理

buildproto.bat

rd /S /Q .\%1%
"..\..\src\protoc-gen-lua\plugin\protoc.exe" --plugin=protoc-gen-lua="..\..\src\protoc-gen-lua\plugin\protoc-gen-lua.bat" --lua_out=. %1%.proto

注意protoc.exe及protoc-gen-lua.bat的路徑符合你的路徑

再編寫要編譯的proto協議的批處理generate.bat

call buildproto.bat loginsvc

執行generate.bat后, 將會編譯同目錄下的loginsvc.proto,輸出loginsvc_pb.lua

 

編譯鏈接lua的pb庫

將protoc-gen-lua\protobuf\目錄拷貝到之前的協議目錄

將其下的pb.c鏈入你的工程, 注意VS2010的VC下需要修改源碼

1.將 #include <endian.h>修改為

#ifndef _WIN32
     #include <endian.h>
     #endif

避免在windows下缺失文件報錯.

2. 調整struct_unpack函數前幾行為

static int struct_unpack(lua_State *L)
{
    uint8_t format = luaL_checkinteger(L, 1);
    size_t len;
    const uint8_t* buffer = (uint8_t*)luaL_checklstring(L, 2, &len);
    size_t pos = luaL_checkinteger(L, 3);
    uint8_t out[8];   

    buffer += pos;

避免VS2010的VC編譯器過于標準, 嚴格要求C風格函數變量前置聲明

在lua_State聲明后添加如下代碼

extern "C" { int luaopen_pb (lua_State *L);}   // 注意防在命名空間外的全局聲明

    luaopen_pb( L );   // 直接注入全局pb, 避免動態加載pb.dll造成的一系列跨平臺問題

 

lua中使用pb

local loginsvc_pb = require “loginsvc_pb”
 
local REQ = loginsvc_pb.CheckVersionREQ()
local Data = REQ:SerializeToString( )
 
local ACK = loginsvc_pb.CheckVersionACK()
ACK:ParseFromString( Data )

 

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

我的工程目錄

script\
        protobuf\
            buildproto.bat
            generate.bat
            loginsvc_pb.lua
            loginsvc.proto
        Main.lua
    src\
        protoc-gen-lua\
            example\
            plugin\
            protobuf\

posted on 2013-04-24 15:44 戰魂小筑 閱讀(13541) 評論(4)  編輯 收藏 引用 所屬分類: 腳本技術C++/ 編程語言

評論

# re: Lua使用protocolbuf 2013-05-18 13:14 何茂龍
這樣子生成的代碼不支持嵌套其他proto的message
不知道是用法不對還是怎么樣。
如果把所有proto都寫到一個文件就太麻煩了  回復  更多評論
  

# re: Lua使用protocolbuf 2013-06-25 10:37 戰魂小筑
@何茂龍
使用bytes 手動解析下, 可以對消息間互相嵌套進行降耦
  回復  更多評論
  

# re: Lua使用protocolbuf 2013-09-06 20:32 myth
@戰魂小筑
如何用bytes 手動解析?  回復  更多評論
  

# re: Lua使用protocolbuf 2014-05-25 02:44 xgg
這樣子生成的代碼不支持嵌套其他proto的message
這個問題解決了嗎?我也遇到這個問題了~~  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲视频免费在线观看| 欧美一区二区三区免费视| 欧美高清视频www夜色资源网| 久久精品国产99| 久久一区二区三区四区五区| 蜜臀久久久99精品久久久久久| 欧美国产日韩精品| av不卡在线| 午夜久久一区| 欧美另类极品videosbest最新版本 | 免费日韩av| 欧美视频官网| 黄色精品网站| 中文一区二区在线观看| 日韩一区二区精品在线观看| 欧美在线视频日韩| 国产精品草莓在线免费观看| 在线精品视频在线观看高清| 亚洲视屏一区| 亚洲摸下面视频| 欧美高清视频在线| 国产亚洲欧美一区| 亚洲综合电影一区二区三区| 欧美成人精品一区| 欧美影院在线播放| 亚洲国产精品久久精品怡红院 | 国产精品任我爽爆在线播放| 亚洲成人中文| 99re66热这里只有精品3直播| 国产精品一区二区久久精品| 亚洲午夜精品在线| 亚洲国产黄色片| 欧美在线91| 亚洲精品乱码久久久久| 久久一区二区三区国产精品 | 久久国产加勒比精品无码| 欧美精品在线免费观看| 欧美一区二区三区四区在线| 美女网站久久| 亚洲激情亚洲| 欧美成人精品一区二区| 国产精品毛片一区二区三区| 亚洲午夜精品福利| 免费黄网站欧美| 欧美在线播放| 国产精品久久久久久户外露出| 亚洲一区二区网站| 欧美成人高清| 一本久久a久久精品亚洲| 亚洲国产老妈| 欧美色图首页| 亚洲国产专区| 亚洲成人在线网| 欧美伊人久久久久久久久影院| 一区二区三区四区国产精品| 亚洲手机成人高清视频| 国产精品亚洲综合久久| 亚洲精品日本| 国产精品一级| 亚洲视频一二| 国产一区二区黄| 亚洲在线免费视频| 在线精品国产欧美| 久久www免费人成看片高清 | 国产一区二区观看| 亚洲一二三四区| 亚洲一二三四久久| 国产精品av久久久久久麻豆网| 亚洲国产精品精华液网站| 在线观看精品视频| 亚洲精品系列| 夜夜嗨av一区二区三区中文字幕| 久久影音先锋| 亚洲欧美日韩直播| 欧美在线亚洲一区| 久久视频一区二区| 伊人男人综合视频网| 久久精品免视看| 亚洲综合精品四区| 国产精品美女久久久久aⅴ国产馆| 日韩视频一区二区在线观看| 亚洲一级高清| 国产精品中文在线| 欧美制服第一页| 牛牛影视久久网| 亚洲人www| 欧美在线资源| 麻豆国产精品va在线观看不卡| 欧美日韩直播| 亚洲一级在线观看| 久久在线免费观看| 亚洲欧洲午夜| 欧美午夜电影在线| 欧美综合国产| 亚洲国产91| 亚洲欧美日韩爽爽影院| 一区二区亚洲精品| 欧美影院午夜播放| 欧美激情亚洲精品| 亚洲视频一区二区| 精品91视频| 欧美日韩第一区| 在线一区欧美| 国产在线拍揄自揄视频不卡99| 一区二区三区欧美日韩| 亚洲精品视频在线观看免费| 久久精品国产一区二区三区免费看| 你懂的国产精品永久在线| 一区二区av在线| 国内成+人亚洲| 欧美激情一区二区在线| 亚洲福利专区| 欧美主播一区二区三区| 国产精品毛片a∨一区二区三区| 久久精品欧美日韩| 日韩午夜视频在线观看| 看欧美日韩国产| 亚洲欧美在线观看| 国产精品一区久久久| 欧美成人激情在线| 欧美中文字幕在线视频| 99香蕉国产精品偷在线观看| 欧美成人国产va精品日本一级| 亚洲免费在线观看视频| 亚洲精品国产日韩| 国产一区自拍视频| 国产精品久久国产三级国电话系列| 乱码第一页成人| 久久精品夜色噜噜亚洲aⅴ| 亚洲少妇自拍| 亚洲毛片在线| 亚洲黄一区二区三区| 亚洲一区在线观看视频 | 欧美电影在线免费观看网站| 久久av一区二区三区漫画| 亚洲视频成人| 一本大道av伊人久久综合| 亚洲国产成人久久综合| 欧美福利一区二区三区| 久久久久一区二区| 亚洲日本va在线观看| 一区二区亚洲| 国内精品久久久| 国产一区二区三区的电影 | 欧美另类亚洲| 欧美精品v日韩精品v韩国精品v | 亚洲视频在线观看| 一区二区三区四区五区精品视频 | 久久一区中文字幕| 欧美中文字幕| 久久久一二三| 久久综合九色九九| 欧美xxx在线观看| 欧美黄色小视频| 亚洲黄色毛片| 亚洲巨乳在线| 亚洲午夜久久久| 亚洲欧美一区二区三区在线| 欧美高清在线视频观看不卡| 欧美国产第一页| 亚洲国产导航| 在线一区亚洲| 羞羞漫画18久久大片| 久久精品人人做人人综合| 久久亚洲欧洲| 欧美激情综合色| 国产精品久久久久一区二区三区 | 欧美理论大片| 欧美午夜不卡在线观看免费 | 免费高清在线视频一区·| 欧美韩日视频| 国产精品久久午夜| 影音先锋国产精品| 日韩视频免费在线| 在线观看成人一级片| 亚洲乱码一区二区| 亚洲欧美激情诱惑| 久久中文字幕一区二区三区| 亚洲国产精品va在线观看黑人 | 欧美在线观看视频一区二区三区| 久久精彩免费视频| 亚洲国产精品va在线观看黑人| 一区二区日韩伦理片| 久久精品国产久精国产爱| 欧美精品久久一区| 国产无一区二区| 欧美系列精品| 黄色国产精品一区二区三区| 一区二区日韩免费看| 久久精品国语| 日韩手机在线导航| 久久久国产成人精品| 欧美日韩一本到| 欧美特黄一区| 亚洲国产成人高清精品| 欧美亚洲综合久久| 欧美在线播放| 99精品99| 欧美mv日韩mv国产网站| 国产一区二区三区的电影 |