go - 未定义 : proto. ProtoPackageIsVersion3

标签 go protocol-buffers

我得到 : ../.../...pb.go:21:11: undefined: proto.ProtoPackageIsVersion3 我想要版本 2

我从 https://github.com/google/protobuf/releases $ protoc --version 安装了 protoc 给出了 libprotoc 3.6.0。我还从 apt 安装了 golang-goprotobuf-dev

问题:

  1. protoc(protobuffer 编译器总是编译到 Proto3 版本?)
  2. 需要什么额外的支持?
  3. 如何获得可以编译为 Proto2 的编译器?
  4. 我注意到在一个系统中 libproto 3.6.1 编译为 proto2,我不明白这一点。

最佳答案

  1. protoc(protobuffer 编译器总是编译到 Proto3 版本?)

    这取决于你的 protobuf 版本和你的 protoc-gen-go 版本。

  2. 需要什么额外的支持?

    我认为您需要安装 protoc-gen-go

  3. 我怎样才能得到一个编译成 Proto2 的编译器?

    安装特定版本的 protoc-gen-go

    GIT_TAG="v1.2.0" # change as needed
    go get -d -u github.com/golang/protobuf/protoc-gen-go
    git -C "$(go env GOPATH)"/src/github.com/golang/protobuf checkout $GIT_TAG
    go install github.com/golang/protobuf/protoc-gen-go
    
  4. 我注意到在一个系统中 libproto 3.6.1 编译为 proto2,我不明白这一点。

    不确定这个,但如果我没记错的话,决定因素是你的 protoc-gen-go 版本。

希望对您有所帮助!

关于go - 未定义 : proto. ProtoPackageIsVersion3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952723/

相关文章:

java - Hazelcast(Java)和 ETCD(golang)的区别/相似之处?

go - LiteIDE x14 是否有效?

gradle - 如何使用 Gradle 构建 Google Protocol Buffer 和 Kotlin?

c# - 使用 Protocol buffers/Protobuf 的 PInvoke 通用字符串格式

protocol-buffers - 在 PHP 中安装扩展

使用 docker 的 Godep vendor

maven - 如何使用 maven 构建 GO 可执行文件

git - 阅读 github.com/username/kit/go/database/go/database/go.mod 修订版 go/database/v1.0.1 : unknown revision go/database/v1. 0.1

c++ - 修改原始 protobuf 流

python - 在运行时从 protobuf 文件动态创建 python 类?