通信にprotobuf-netライブラリを使用するc#で記述された大規模なソリューションがあります。私は既存のコードと通信するためのc++プログラムを作成しようとしていますが、その方法をほぼ理解できるようになっています。
計画は次のとおりです。
1)すべてがc#で開始されたため、.protoファイルはありません。ただし、既存のメッセージクラス(GetProto)から.protoをキャプチャするコードを簡単に記述できます。
2)一部のタイプは非標準です。つまり、他のタイプで定義されています。たとえば、bcl.DateTimeやbcl.Decimalなどです。このリンクを使用して、定義を見つけることができました:Protobuf-net-.NETGUIDのシリアル化-C++でこれを読み取る方法は?
3)プロト定義を取得したら、Googleコードを実行してクラスを生成できます。これには、非標準的なものを処理するための追加のコードが必要になります。大したことではありません。
現時点での私の唯一の問題は、辞書/地図の形式です。彼らはこのように見えます:
repeated Pair_Decimal_Int32 MyDict = 1
私が知る必要があるのは、この特別なタイプがどのように定義されているかです。もちろんジェネリックスにリンクされているので(辞書によって異なります)、それを生成する特別なコードがあるのではないでしょうか。protobuf-netのどこでこれを処理しているのかよくわからないので、助けを求めています。