4

我正在尝试用 C++ 生成 Google Assistant 库。我已经使用 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 ?我怎样才能得到这些文件?有什么问题吗?

4

1 回答 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
于 2017-07-09T11:30:09.933 回答