.NET アプリケーションで ProtoBuf-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 に入れます。大きな問題は、ASF サンプルを正常に読み取る C++ アプリにあります。逆シリアル化しようとすると、メモリ アクセス違反が発生します :(
これは私のC++コードです:
m_screenBuffer.ParseFromArray(serBuffer, dwInputDataLen);
(ここで、m_screenBuffer は ProtoScreenBuffer、serBuffer は ASF ファイルから取得した生のバイト配列、dwInputDataLen はその長さです。)
私がやろうとしていることに対して、ここで間違っていることはありますか (C# .NET でシリアル化し、C++ で逆シリアル化しますか?)
どうもありがとう。
ローイ