[protobuf 笔记]03-Protobuf 生成各语言类库
前言
对 protobuf 有初步的学习和认识后就要开始学会处理自己的第一个 demo 然后将其生成对应的语言。相关其他基础的学习笔记:
protoc 编译器支持将 proto 文件编译成多种语言版本的代码。生成类库的命令格式如下:
--proto_path=IMPORT_PATH
:可以在 .proto 文件中 import 其他的 .proto 文件,proto_path 即用来指定其他 .proto 文件的查找目录。如果没有引入其他的 .proto 文件,该参数可以省略。--<lang>_out=DST_DIR
:指定生成代码的目标文件夹,例如 –go_out=. 即生成 GO 代码在当前文件夹,另外支持 cpp/java/python/ruby/objc/csharp/php 等语言。
创建 protobuf 文件
创建一个以 .proto 为后缀的文件,并定义 message。创建完后即可以进行生成对应语言的类库。
Javascript 类库
Typescript 类库
使用 protoc-gen-ts 插件
Golang 类库
要在 Golang 中使用 protobuf,还需要安装 protoc-gen-go 插件。该插件可以将 .proto
文件转换为 Golang 代码
执行生成 Go 类库的命令
遇到的错误
1、生成是一直报错:Please specify a program using absolute path or make sure the program is available in your PATH system variable --go_out: protoc-gen-go: Plugin failed with status code 1.
go get 下载的插件都自动安装到你安装 $GOPATH/bin/
的目录下,所以你可以将其复制出来,然后再配置环境变量
其他问题的解决方案,已经有人经历一样的问题,可以参考该解决方案:blog.csdn.net/m0_52649917…
使用流程
首先是定义一个.proto 文件
使用 protobuf 的编译器对.proto 文件进行编译,生成相关开发语言的类
使用生成的类,通过 protobuf api 进行读写
版权声明: 本文为 InfoQ 作者【南吕】的原创文章。
原文链接:【http://xie.infoq.cn/article/32ca20753028e0a2096878d04】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论