c++ - 在 Protocol Buffers 中,如何从上层目录导入文件?

标签 c++ protocol-buffers

我在 Protocol Buffer 文件(pcfg_lm.proto)中有以下代码:

import "../types/language.proto";

package nlp;

message PCFGProto {
  required Language lang = 1;
}

当然还有一个 proto 文件存在于 ../types/language.proto 中。但是,当我发出命令时:

protoc pcfg_lm.proto --cpp_out=/tmp

这是错误信息:

../types/language.proto: File not found.
pcfg_lm.proto: Import "../types/language.proto" was not found or had errors.
pcfg_lm.proto:6:12: "Language" is not defined.

我认为必须有某种方法可以在不使用 -I 标志的情况下指定上级目录中的文件名。但是我该怎么做呢?

最佳答案

您可以使用 --proto_path= 指令指定要搜索导入的目录。如果需要,它可以多次使用。

正确的 --proto_path 将取决于包在导入文件 (language.proto) 中的定义方式。

  1. 如果导入的文件(language.proto)包含包类型;

    指定--proto_path=父目录并将导入更改为

    导入“types/language.proto”;

  2. 如果导入的文件没有包

    指定--proto_path=父目录/类型并将导入更改为

    导入“language.proto”;

关于c++ - 在 Protocol Buffers 中,如何从上层目录导入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5420169/

相关文章:

c++ - 替代模板参数的转换构造函数

c++ - 当任何进程(包括恶意软件)都可以使用 VirtualProtect 时,它有什么意义?

protocol-buffers - 如何覆盖谷歌缓冲区协议(protocol)中的重复字段值

c++ - 在 C++ 中使用 protobuf 对象的 protobuf 映射

python - 如何降级protobuf

c++ - 读取 BMP 文件返回意外数据

c++ - glOrtho 不工作?

c++ - 派生自 QSettings 并存储 QIcon

go - 原型(prototype)请求中枚举的输入验证

macos - 完全卸载protobuf