Protobuf-net - 序列化.NET GUID - 如何在C ++中阅读?

时间:2010-03-03 09:44:39

标签: .net c++ protocol-buffers protobuf-net

我在.NET应用程序中使用Protobuf-net序列化了一个对象,相对容易。 我还使用GetProto()命令获取protobuf-net生成的.proto文件。

在.NET生成的.proto文件中,我的GUID字段的类型为“bcl.guid”。

现在我希望用C ++编译.proto文件,以便我可以反序列化数据。

但是,C ++ protoc.exe编译器不知道如何解释bcl.guid,并抛出错误消息“VideoAudioStructs.proto:11:13:”Guid“未定义。” 我该怎么办?

1 个答案:

答案 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块发送。如果你想要一个例子,请告诉我。