目录
// $SRC_DIR: .proto 所在的源目录 // --cpp_out: 生成 c++ 代码 // $DST_DIR: 生成代码的目标目录 // xxx.proto: 要针对哪个 proto 文件生成接口代码 protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto // 例 protoc --proto_path=C:\znote\lua\z --csharp_out=C:\znote\lua\z test.proto protoc -I=C:\znote\lua\z --csharp_out=C:\znote\lua\z test.proto
syntax = "proto3"; message Example1 { optional string stringVal = 1; optional bytes bytesVal = 2; message EmbeddedMessage { int32 int32Val = 1; string stringVal = 2; } optional EmbeddedMessage embeddedExample1 = 3; repeated int32 repeatedInt32Val = 4; repeated string repeatedStringVal = 5; }
message xxx { // 字段规则:required -> 字段只能也必须出现 1 次 // 字段规则:optional -> 字段可出现 0 次或1次 // 字段规则:repeated -> 字段可出现任意多次(包括 0) // 类型:int32、int64、sint32、sint64、string、32-bit .... // 字段编号:0 ~ 536870911(除去 19000 到 19999 之间的数字) 字段规则 类型 名称 = 字段编号; }
导入定义,reserved 保留字段等知识请参阅 [翻译] ProtoBuf 官方文档(二)- 语法指引(proto2)。
关于定义时的一些规范请参阅 [翻译] ProtoBuf 官方文档(四)- 规范指引
从github.com/google/protobuf/releases下载 ( protoc-<version>-<os><arch>.zip
) 对应的 zip 文件
protoc-3.20.1-rc-1-win64.zip
随便解压到哪
C:\znote\lua\protoc-3.20.1-rc-1-win64
然后添加环境变量
PATH = C:\znote\lua\protoc-3.20.1-rc-1-win64\bin
cmd验证
C:\Users\lx>protoc --version libprotoc 3.20.1-rc1