赞
踩
用lua-protobuf替换lua的protoc-gen-lua
lua-protobuf下载:https://github.com/starwing/lua-protobuf
将tolua中pbc(pb.c),替换成lua-protobuf(pb.c和pb.h),然后编译成相应平台支持的库文件(win tolua.dll, android libtolua.so, mac tolua.bundle, ios libtolua.a)替换原来的文件(我直接用了别人编译好的文件)
复制lua文件到工程的lua文件目录下
用pb.load加载协议的二进制文件
使用了protoc 3.9.0
生成协议的二进制文件
protoc -I [协议文件路径] -o [生成的文件路径]
生成c#文件
protoc -I [协议文件路径] --csharp_out [生成文件的目标目录]
注意:-I 后的 ./ 后面要加空格,不然会提示Missing input file,别的好像就不用加
为了使用生成的c#文件,还需要把Google.Protobuf.dll和一些相关的dll导入工程,用NuGet下载Google.Protobuf,都会下载到Packages里
使用的批处理程序,与protoc.exe放在一起
- @echo off
-
-
-
- ::protoc -I 用的路径,.\后要加一个空格
-
- set PROTO_PATH_I=.\ Protocol
-
- set PROTO_PATH=.\Protocol
-
- set BYTES_OUT=..\Assets\Res\ProtobufCompiledProtocols
-
- set CS_OUT=..\Assets\Scripts\ProtobufGenerate
-
- set TEMP_OUT=.\_temp
-
-
-
- @echo off
-
- md "_temp"
-
-
-
- @echo off
-
- echo ----- 生成二进制文件 -----
-
- @echo off
-
- dir %PROTO_PATH%\*.proto /b > %TEMP_OUT%\_temp_protolist.txt
-
- @echo on
-
- for /f "delims=." %%i in (%TEMP_OUT%\_temp_protolist.txt) do protoc -I %PROTO_PATH_I%\%%i.proto -o %TEMP_OUT%\%%i.bytes"
-
-
-
-
-
- @echo off
-
- echo ----- 生成c#文件 -----
-
- @echo on
-
- for /f "delims=." %%i in (%TEMP_OUT%\_temp_protolist.txt) do protoc -I %PROTO_PATH_I%\%%i.proto --csharp_out %TEMP_OUT%"
-
-
-
-
-
- @echo off
-
- echo ----- 复制到目标目录 -----
-
- @echo on
-
- copy %TEMP_OUT%\*.bytes %BYTES_OUT%
-
- @echo on
-
- copy %TEMP_OUT%\*.cs %CS_OUT%
-
-
-
-
-
- @echo off
-
- echo ----- 删除临时目录 -----
-
- @echo on
-
- rd /s /q %TEMP_OUT%
-
-
-
- @echo off
-
- pause

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。