如何从 C++ 程序创建 google 原型消息文件?

How can I create a google proto message file from C++ program?

我在 xml 中有一个输入文件,我已经使用 C++ 解析并填充了我的数据结构。

我是 google protocol buffer 的新手,我不知道如何从我填充的数据结构中创建消息 (.prot) 文件。

谢谢

如果您想从 C++ 头文件中的 structure/class 定义生成 google 协议缓冲区 .proto 文件,您需要使用某种形式的 C++ 反射。

C++目前还没有内建反射,但是有第3方库可以解决。

使用 Boost Fusion BOOST_FUSION_DEFINE_STRUCT,您可以这样定义 类,这样您就可以在编译或 运行 时迭代成员。此解决方案是侵入式的,因为它需要您使用该宏定义结构,但不需要将任何额外的工具集成到您的构建系统中。

另一种选择是使用独立的代码生成器。一个例子是 Classdesc.

协议缓冲区更像是 XML 的替代品,而不是您使用 XML 创建的东西。 因此,在这种情况下,您将编写 .proto 文件来定义您的数据模型,然后将它们与相关的 getter、setter 和构建器一起编译到您的 .cpp 文件中。