使用 go protoc --go_out 输出的 *.pb.go文件时报 undefined: proto.ProtoPackageIsVersion3
<p>事情是这样的:我参考go的 grpc 实现 https://grpc.io/docs/quickstart/go/</p><blockquote>
<h3 id="download-the-example">Download the example</h3>
<p>The grpc code that was fetched with <code>go get google.golang.org/grpc</code> also contains the examples. They can be found under the examples dir: <code>$GOPATH/src/google.golang.org/grpc/examples</code>.</p>
</blockquote>
<p>根据教程一步一部执行helloword demo 重新转换修改后的 helloword.proto 文件至 helloword.go.proto 文件后</p>
<div class="cnblogs_code">
<pre>protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld</pre>
</div>
<p>再执行 </p>
<div class="cnblogs_code">
<pre>go run greeter_server/main.go</pre>
</div>
<p>就报错</p>
<blockquote>
<p>helloworld\helloworld.pb.go:25:11: undefined: proto.ProtoPackageIsVersion3</p>
</blockquote>
<p><strong><span style="color: rgba(255, 0, 0, 1); font-size: 18px">通过 go get -u google.golang.org/grpc 安装的 protoc-gen-go版本永远是最新的(支持v3)</span></strong></p>
<p><span style="background-color: rgba(136, 136, 136, 1); color: rgba(255, 255, 255, 1)">而使用grpc教程 demo 用的包是 protoc-gen-go v1.2.0 版本 (不支持v3 )</span></p>
<div class="cnblogs_code">
<pre> go get -u google.golang.org/grpc</pre>
</div>
<p> </p>
<p>如何切换安装 v1.2.0版本?</p>
<blockquote>
<p>If you need a particular version of <code>protoc-gen-go</code> (e.g., to match your <code>proto</code> package version), one option is</p>
<div class="highlight highlight-source-shell">
<pre>GIT_TAG=<span class="pl-s"><span class="pl-pds">"v1.2.0<span class="pl-pds">" <span class="pl-c"><span class="pl-c"># change as needed
go get -d -u github.com/golang/protobuf/protoc-gen-go
git -C <span class="pl-s"><span class="pl-pds">"<span class="pl-s"><span class="pl-pds">$(go env GOPATH<span class="pl-pds">)<span class="pl-pds">"/src/github.com/golang/protobuf checkout <span class="pl-smi">$GIT_TAG
go install github.com/golang/protobuf/protoc-gen-go<br></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
</blockquote>
<p> </p>
<p>参考:https://stackoverflow.com/questions/53952723/undefined-proto-protopackageisversion3</p><br><br>
来源:https://www.cnblogs.com/zjhblogs/p/11505432.html
頁:
[1]