背景:今天引用了一个同事提供的接口,由于他的接口不仅是给我一个人使用,还会给其他人使用,那我就拷贝了一个接口,然后使用命令编译,然后就报错了。
拷贝接口:
rpc TestList(google.protobuf.Empty) returns (ItemResponseDTO){}
编译命令:
protoc --go_out=plugins=grpc:. abc.proto
报错如下:
abc.proto "google.protobuf.Empty" is not defined.
其实这个错误不难,奈何是接手其他人的项目,又很久没写。
网上各种搜索,然后得到结果大概是把存放google.protobuf.Empty的目录路径写在编译命令里,这个protobuf目前也是半懂不懂的,要是全搞明天太花时间了,不扯了说最简单解决方法。
重点 is not defined 是没定义的意思,没定义就是在.proto文件头部没有导入。
1.在头部文件导入empty.proto。
syntax = "proto3";
import "google/protobuf/empty.proto";
2.在abc.proto同级新建google目录,google目录下新建protobuf目录,然后将empty.proto放在protobuf目录下。
再次编辑就成功了。
empty.proto的来源,安装protobuf成功后,引用的头文件都在/usr/local/include这里,具体路径如下:
/usr/local/include/google/protobuf/empty.proto
网友评论