Я использую ProtoBuf-Net в своем приложении .NET для сериализации следующего: (в формате .proto)
message ProtoScreenBuffer {
optional int32 MediaId = 1;
optional bytes Data = 2;
optional bool LastBuffer = 3;
optional int64 StartTime = 4;
optional int64 StopTime = 5;
optional int32 Flags = 6;
optional int32 BufferSubType = 7;
optional int32 BufferType = 8;
optional Guid Guid = 9;
repeated int32 EncryptedDataStart = 10;
repeated int32 EncryptedDataLength = 11;
}
Моя цель состоит в том, чтобы сериализовать это и внедрить его в файл ASF, как один образец.
Я вызываю это для сериализации:
MemoryStream ms = new MemoryStream();
Serializer.Serialize<ProtoScreenBuffer>(ms, ProtoScreenBuffer.CreateProtoScreenBuffer (buffer));
затем я получаю байтовый массив из объекта ms:
ms.ToArray();
и я поместил этот байтовый массив в ASF. Большая проблема в моем приложении C ++, которое отлично читает пример ASF, я получаю нарушение доступа к памяти, когда пытаюсь десериализовать его: (
это мой код C ++:
m_screenBuffer.ParseFromArray(serBuffer, dwInputDataLen);
(где m_screenBuffer - это ProtoScreenBuffer, serBuffer - необработанный байтовый массив, полученный мной из файла ASF, а dwInputDataLen - его длина).
Есть ли что-то, что я делаю здесь неправильно, для того, что я пытаюсь сделать (сериализовать в C # .NET и десериализовать в C ++?)
Большое спасибо.
Roey