I have serialized an object using Protobuf-net , in my .NET application, with relative ease.
I also get the .proto file that protobuf-net generated, using GetProto() command.
In the .NET generated .proto file, my GUID fields get a type of "bcl.guid".
Now I wish to compile the .proto file in C++ so I can deserialize the data.
However, C++ protoc.exe compiler does not know how to interpret bcl.guid, and throws an error message "VideoAudioStructs.proto:11:13: "Guid" is not defined."
What do I do with this?
protobuf-net encodes this as a pair of fixed-length 64 bit values at fields 1 and 2. I haven't tried it for interop purposes, but you could try importing the (bespoke) bcl.proto (I think this is in the deployment folder; if not let me know and I'll add it; otherwise it is in the trunk).
But conceptually it is just:
message guid {
optional fixed64 lo = 1; // the first 8 bytes of the guid
optional fixed64 hi = 2; // the second 8 bytes of the guid
}
If you get any problems, a fallback approach would be to send it (instead) as a bytes
chunk, by adding a shim property. Let me know if you want an example of that.