libprotoc只编译它所包含的protoc文件,而不编译其他的protoc文件(出现了Google gRPC助手annotations.pb.h找不到文件或目录的错误)。

4

我正在尝试用C++生成Google助手库。

我使用protoc编译器编译了embedded_assistant.proto文件,并获得了库的embedded_assistant.grpc.pb.hembedded_assistant.grpc.pb.cc文件。

我创建了一个客户端文件ea_main.cc,并在其中包含了这些文件。

当我尝试使用g++编译器编译ea_main.cc时,我收到了这个错误。

car@ubuntu:~/grpc/examples/cpp/embedded_assistant$ g++ -I./ ea_main.cc -o OUT_CPP_TEST -std=c++11
In file included from embedded_assistant.grpc.pb.h:22:0,           
                 from ea_main.cc:9:
embedded_assistant.pb.h:33:39: fatal error: google/api/annotations.pb.h: No such file or directory
compilation terminated.

embedded_assistant.proto文件中,还包含另一个proto文件。
import "google/api/annotations.proto";
import "google/rpc/status.proto";

似乎protoc没有对这些.proto文件进行编译或生成头文件。当查看google/api/时,它们并不存在。
因此,g++编译器会因为缺少annotations.pb.h文件而出错。
为什么protoc没有编译包含在embedded_assistant.proto中的proto文件呢?我该如何获取这些文件?这是有问题的吗?
1个回答

2
我已经找到解决方案,即在编译时包含其他所需的协议,例如:
protoc --proto_path=protos --cpp_out=. protos/embedded_assistant.proto protos/google/api/annotations.proto protos/google/api/http.proto protos/google/rpc/status.proto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接