【发布时间】:2013-08-02 02:10:48
【问题描述】:
我想在我正在处理的 C++ 项目中使用 protobuf。 但是,我不喜欢使用 protoc 创建的自动生成的类,而是更喜欢坚持使用我已经拥有的 POCO。这是因为 POCO 已经在代码的其他部分使用,我希望以后能够轻松地切换序列化机制。但是在 POCO 和 protobuf 消息类之间手动编写转换器似乎是乏味和错误的。
我想知道是否有一种方法可以使用 protobuf 创建一个序列化程序 - 一个自动生成的类,它能够序列化和反序列化我的 POCO,而不会打扰我。
谢谢。
【问题讨论】:
-
您可以直接将您的 POCO 写入网络/磁盘吗?当然,如果它们包含指针,这将不起作用....
-
我的 POCO 包含原始类型、字符串、指向其他 POCO 的指针和上述的向量。指针也需要处理(例如,通过序列化指向的对象并使用一些 id 引用它)。直接写就是序列化,我可以手动做,我只是想办法避免。
-
Avro (avro.apache.org) 可能更接近您想要的(或者在 java 中)。此外,使用 Protocol Buffers,您不仅限于官方版本;您可以编写自己的代码生成器。列出了另一个 C/C++ 版本sourceforge.net/projects/spbc/files/spbc/spbc-1.0.1。它在 4 年内没有更改,因此将过时
-
在code.google.com/p/protobuf/wiki/ThirdPartyAddOns中列出了其他c版本的protocol buffers
-
Bruce Martin - 正如您所说,Java 无关紧要。编写自己的代码生成器正是我希望避免的,也是我提出这个问题的原因。简单的 Protobuf 似乎不相关(或记录或维护),我在 3rd 方插件页面中看不到任何有用的东西。还是谢谢。
标签: c++ protocol-buffers