Windows下使用proto问题记录

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

系列文章目录

最近项目中计划使用protoc框架在这里预研的过程中遇到一些问题在此做下记录。


一、Protocol Buffers是什么

        协议缓冲区又名 protobuf是 Google 的语言中立、平台中立、可扩展的结构化数据序列化机制。您可以在 Google Developers 站点上找到protobuf 的文档

此 README 文件包含 protobuf 安装说明。要安装 protobuf您需要为您选择的编程语言安装协议编译器用于编译 .proto 文件和 protobuf 运行时。

git地址https://github.com/protocolbuffers/protobuf

下载地址https://github.com/protocolbuffers/protobuf/tags

二、安装

1、安装看以下地址

我安装的是win64版本的protoc。

https://www.jianshu.com/p/102485516187

2、命令使用

## 将当前所在目录切换到proto文件所在目录下
## 若只是想生成序列化和反序列话的文件那么仅使用以下命令
protoc -I. --go_out=. *.proto

## 若想生成服务器和客户端通讯、实现的公共库代码那么还需要继续使用以下命令
protoc -I. --go-grpc_out=. *.proto

三、问题

1、'protoc-gen-go' 不是内部或外部命令也不是可运行的程序或批处理文件。

原因缺少包那就安装包这里提供两种方式默认使用第一种。
        1protocol buffer 编译器需要一个插件来生成 Go 代码。通过运行以下命令使用 Go 1.16 或更高版本安装它它会在你的$gopath的bin目录下生成 protoc-gen-go.exe 文件

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

        2解决方法

go get -u github.com/golang/protobuf/protoc-gen-go

         因为我是使用mod模式所以我的下载后的文件在%GOPATH%/pkg/mod下边进入到protobuf/protoc-gen-go/ 下执行以下命令后解决问题。

go build
go install

2、生成*.pb.go文件报错

        1想在go项目中生成相关*.pb.go文件结果失败。

        错误截图如下

 

        原因因为helloworld.proto中的go_package配置路径文件在这里我使用了windows下的路径方式因此执行失败只能存在.或/符号。

        2修改\\为/后继续执行还是报错如下

 

        原因找不到E:的这个路径当将 E: 该为其它路径 D: 时同样报错。

        解决方法直接将 E: 给去掉后执行成功在这个路径中不能存在E:这种盘符路径。

 

        注释该go_package配置为生成 .pb.go文件的路径以当前helloworld.proto文件所在目录为根目录在此目录下自动创建文件夹和文件。

3、结合grpc插件使用失败

         解决替换为如下图所示命令成功生成文件。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: windows