2010-03-03 4 views
1

.NET 응용 프로그램에서 Protobuf-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 "정의되지 않았습니다."라는 오류 메시지를 throw합니다. 어떻게해야합니까?

답변

1

protobuf-net은 이것을 필드 1과 필드 2의 고정 길이 64 비트 값 쌍으로 인코딩합니다. interop 용도로 사용하지는 않았지만, (맞춤형) 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

Guides에 문제가있는 경우 : 빈 값으로 비 직렬화됩니다. http://stackoverflow.com/questions/20376783/protobuf-net-fails-to-deserialize-guid – Fdr