2

假设我们想创建我们的消息而不使用任何预先存在的 .proto 文件并从它们编译出 cpp/cxx/h 文件。我们希望将 protobuf 严格用作库。例如,我们得到了(以某些只有我们知道的格式)消息描述:一条名为MyMessagehas to haveMyIntFiels和 optional的消息MyStringFiels。如何创建这样的消息?例如用简单的数据填充它保存到.bin该二进制文件并从中读取其内容?

我查看了dynamic_message.h 帮助描述和 DescriptorPool 等等,但没有看到如何在消息中添加/删除字段,也没有办法将描述的动态消息添加到 DescriptorPool。

任何人都可以解释一下吗?

4

1 回答 1

2

简短的回答:不能那样使用。

Protobuf的概述页面说:

XML 在某种程度上也是自描述的。仅当您具有消息定义(.proto 文件)时,协议缓冲区才有意义。

这意味着 Protobuf 的全部意义在于抛弃自我描述性以提高解析速度 ==> 创建自我描述消息并不是它的目的。

考虑使用 XML 或 JSON 或任何其他序列化格式。如果需要保护,您可以使用对称加密和/或 lzip 压缩。

于 2013-01-09T08:45:22.023 回答