在另一个库中导入 proto

Posted

技术标签:

【中文标题】在另一个库中导入 proto【英文标题】:import proto in another library 【发布时间】:2020-02-17 16:31:18 【问题描述】:

我正在开发一个 c++ 库 B,它依赖于另一个库 A。 这两个库都使用protobuf来定义message objects

例如,

// A.proto in library `A
package libA;
message ObjA ...

我想在库中使用它B

// B.proto in library `B`
import A.proto  // ??? is this right ???
message ObjB 
    ObjA obj_a=1;

如果我只是将 A.proto 复制到当前库 B 中,则会创建 ObjA 的重复类。

但是如果我不复制A.proto,我怎么能在消息ObjB中使用消息ObjA

【问题讨论】:

【参考方案1】:

可以将protoc的搜索路径添加到A.proto所在目录中:

protoc -I=DIR_WITH_A B.proto

你也可以在 B.proto 中使用 import 语句编写相对目录:

// B.proto in library `B`
import "SOME_DIR/A.proto";
message ObjB 
    ObjA obj_a=1;

【讨论】:

以上是关于在另一个库中导入 proto的主要内容,如果未能解决你的问题,请参考以下文章

在另一个应用模型中导入应用模型类

Vuejs 在另一个组件中导入组件

Python 在另一个文件中导入模块

在 ROS2 的包中导入模块

如何在vs中导入静态链接库(lib)?

如何在Android项目中导入OpenCV库?