2010-03-03 74 views
1

我已經使用Protobuf-net在我的.NET應用程序中序列化了一個對象,並且相對簡單。 我還使用GetProto()命令獲取protobuf-net生成的.proto文件。Protobuf-net - 序列化.NET GUID - 如何在C++中讀取它?

在.NET生成的.proto文件中,我的GUID字段獲得一種「bcl.guid」。

現在我想在C++中編譯.proto文件,這樣我就可以反序列化數據。

但是,C++ protoc.exe編譯器不知道如何解釋bcl.guid,並引發錯誤消息「VideoAudioStructs.proto:11:13:」Guid「未定義。」 我該怎麼做?

回答

1

protobuf-net將其編碼爲字段1和2中的一對固定長度的64位值。我沒有嘗試過用於互操作目的,但是您可以嘗試導入(定製)bcl.proto(I 認爲這是在部署文件夾;如果不讓我知道,我會添加它;否則它是in the trunk)。

但在概念上它僅僅是:

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塊,通過增加墊片屬性。讓我知道你是否想要一個例子。

+0

我有一個Guids的問題:他們反序列化爲空值:http://stackoverflow.com/questions/20376783/protobuf-net-fails-to-deserialize-guid – Fdr 2013-12-04 13:46:51