1

.NET アプリケーションで Protobuf-net を使用して比較的簡単にオブジェクトをシリアル化しました。GetProto() コマンドを使用して、protobuf-net が生成した .proto ファイルも取得します。

.NET で生成された .proto ファイルで、GUID フィールドは「bcl.guid」のタイプを取得します。

ここで、.proto ファイルを C++ でコンパイルして、データを逆シリアル化できるようにします。

ただし、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 に答える