1

我已经在我的 .NET 应用程序中使用 Protobuf-net 相对轻松地序列化了一个对象。我还使用 GetProto() 命令获得了 protobuf-net 生成的 .proto 文件。

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

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

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

4

1 回答 1

1

protobuf-net 将其编码为字段 1 和 2 处的一对固定长度的 64 位值。我没有尝试将其用于互操作目的,但您可以尝试导入(定制)bcl.proto(我认为这是在部署文件夹;如果不让我知道,我会添加它;否则它在树干中)。

但从概念上讲,它只是:

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通过添加 shim 属性将其(而不是)作为一个块发送。如果你想要一个例子,请告诉我。

于 2010-03-03T10:36:51.817 回答