【发布时间】:2020-09-11 07:47:36
【问题描述】:
是否可以有两个应用程序 App-1 和 App-2,一个在 OS-1 上运行,另一个在 OS-2 上运行。 App-1 使用 nanopb 序列化/反序列化数据并与 App-2 通信。 App-2 使用 google protobuf 序列化/反序列化数据并与 App-1 通信。
【问题讨论】:
是否可以有两个应用程序 App-1 和 App-2,一个在 OS-1 上运行,另一个在 OS-2 上运行。 App-1 使用 nanopb 序列化/反序列化数据并与 App-2 通信。 App-2 使用 google protobuf 序列化/反序列化数据并与 App-1 通信。
【问题讨论】:
是的。这是 protobuf 的一个重点,能够与不同语言的实现进行通信。所有 protobuf 库都应该相互兼容。
nanopb 与 Google 的 C++ protobuf 库的具体情况由 nanopb alltypes 测试用例检查,两个库的二进制输出是逐字节相等的。
【讨论】:
foo.proto 文件编译的,对吗?但是它们在编程上是不同的,例如pb_encode vs SerializeToString() 和pb_decode vs ParseFromString。所以总的来说,我不能依赖同一个 API 来与每个我使用的 API 进行交互。
SerializeToString 编写的,那时我意识到我假设了太多我认为在 nanopb 和 google protobuf 实体之间建立的等价性。很高兴知道!