我在.NET应用程序中使用Protobuf-net序列化了一个对象,相对容易。 我还使用GetProto()命令获取protobuf-net生成的.proto文件。
在.NET生成的.proto文件中,我的GUID字段的类型为“bcl.guid”。
现在我希望用C ++编译.proto文件,以便我可以反序列化数据。
但是,C ++ protoc.exe编译器不知道如何解释bcl.guid,并抛出错误消息“VideoAudioStructs.proto:11:13:”Guid“未定义。” 我该怎么办?
答案 0 :(得分:1)
protobuf-net在字段1和2中将其编码为一对固定长度的64位值。我没有尝试将其用于互操作目的,但您可以尝试导入(定制)bcl.proto(I 想想这是在部署文件夹中;如果没有让我知道,我会添加它;否则它是in the trunk)。
但从概念上讲它只是:
message guid {
optional fixed64 lo = 1; // the first 8 bytes of the guid
optional fixed64 hi = 2; // the second 8 bytes of the guid
}
如果遇到任何问题,后备方法是通过添加填充属性将其(而不是)作为bytes
块发送。如果你想要一个例子,请告诉我。