Protobuf-net - сериализация .NET GUID - как читать это на C ++? - PullRequest
1 голос
/ 03 марта 2010

Я сравнительно легко сериализовал объект, используя Protobuf-net, в моем приложении .NET. Я также получаю файл .proto, сгенерированный protobuf-net, используя команду GetProto ().

В сгенерированном .NET файле .proto мои поля GUID получают тип "bcl.guid".

Теперь я хочу скомпилировать файл .proto в C ++, чтобы я мог десериализовать данные.

Однако компилятор C ++ protoc.exe не знает, как интерпретировать bcl.guid, и выдает сообщение об ошибке «VideoAudioStructs.proto: 11: 13:« Guid »не определен». Что мне с этим делать?

1 Ответ

1 голос
/ 03 марта 2010

protobuf-net кодирует это как пару 64-битных значений фиксированной длины в полях 1 и 2. Я не пробовал это для целей взаимодействия, но вы можете попробовать импортировать (на заказ) bcl.proto (I * 1001). * думаю это находится в папке развертывания, если нет, дайте мне знать, и я добавлю его, в противном случае это в транке ).

Но концептуально это просто:

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. Дайте мне знать, если вам нужен пример этого.

...