如何解决“ --go_out:protoc-gen-go:系统找不到指定的文件。”错误

时间:2019-04-09 13:38:23

标签: windows go protocol-buffers

我创建一个person.proto,我想将此文件编译为* .go。 我安装了软件包

  

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

执行以下命令后

  

。\ protoc.exe --go_out =。 person.proto

我收到下面的错误

  

-go_out:protoc-gen-go:系统找不到指定的文件。

我要使用2版缓冲协议

如何解决此错误?

我的原始文件:

package communication;

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

1 个答案:

答案 0 :(得分:1)

说明

不幸的是,据说没有一个核心开发人员在Windows上开发,因此我解决了这个问题,并为Windows开发人员添加了这个答案。

但是,@ Flimzy提到的possible duplicate link不起作用,我完成了下面的所有6个步骤,然后问题出人意料地在第7步解决了。此外,错误地,我在a VSCode终端。


程序

  1. 从“ https://developers.google.com/protocol-buffers/docs/downloads”下载protoc-win32.zip

  2. 解压缩文件,然后将protoc.exe的位置添加到PATH环境变量中。另外,您并不需要那么多,您可以将protoc.exe复制到GOPATH

  3. 更改/导航到文件的CMD / Powershell路径,然后从命令提示符运行protoc.exe --version以验证过程。

  4. 验证是否设置了GOPATH环境变量。

  5. 从CMD / Powershell运行go get -u github.com/golang/protobuf/protoc-gen-go。这会将二进制文件安装到%GOPATH%/bin

  6. 将确切的%GOPATH%/bin添加到您的PATH环境变量中。

  7. 打开一个新的CMD / Powershell,导航到您的.proto文件,然后运行protoc --go_out=. *.proto


参考文献:

  1. How to install protoc-gen-go (Go protocol buffer compiler plugin) in windows?
  2. protoc-gen-go: protoc fails to compile in Windows