Protobuf -net - Serializing .NET Guid - كيفية قراءة هذا في C ++؟
-
24-09-2019 - |
سؤال
لقد قمت بتسلسل كائن باستخدام protobuf-net ، في تطبيق .NET الخاص بي ، بسهولة نسبية. أحصل أيضًا على ملف .proto الذي تم إنشاؤه ، باستخدام أمر getProto ().
في ملف .NET الذي تم إنشاؤه .Proto ، تحصل حقول GUID الخاصة بي على نوع من "Bcl.Guid".
الآن أود أن أقوم بتجميع ملف .proto في C ++ حتى أتمكن من تخلص من البيانات.
ومع ذلك ، لا يعرف برنامج التحويل البرمجي C ++ protoc.exe كيفية تفسير Bcl.Guid ، ويلقي رسالة خطأ "VideoAudioStructs.Proto: 11: 13:" Guid "لم يتم تعريفه". ماذا أفعل بهذا؟
المحلول
يقوم Protobuf-Net بتشفير هذا كزوج من قيم 64 بت ثابتة في الحقول 1 و 2. فكر في هذا في مجلد النشر ؛ إذا لم تخبرني وسأضيفه ؛ وإلا هو كذلك في الشاحنة).
لكن من الناحية المفاهيمية:
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. اسمحوا لي أن أعرف إذا كنت تريد مثالا على ذلك.