2010-02-21 10 views
2

저는 C++/CLI의 새로운 기능이며 네이티브 C++ GUID를 C++/CLI Guid로 변환하려고합니다 ^. 내 변환을 시도 할 때 : 내 문제의 근본 소스가 관리되는 형식으로 관리되지 않는 변환하려고하는 것을 이해관리되지 않는 GUID를 관리되는 Guid로 변환^

error C2440: '=' : cannot convert from 'GUID' to 'System::Guid ^'

:

BlockInfo^ blockInfo = gcnew BlockInfo(); 
blockInfo->BlockFilterGuid = ba.BlockAllFilter.subLayerKey; 

을 ... 나는 다음과 같은 오류를받을 ,하지만 나는 C + + 또는 C++/CLI에서이 문제를 해결하는 방법을 충분히 익히지 못했습니다.

답변

4

네이티브 GUID 정의됩니다 :

typedef struct _GUID { 
    DWORD Data1; 
    WORD Data2; 
    WORD Data3; 
    BYTE Data4[8]; 
} GUID; 

당신은 System::Guid을 할당하고 제대로 네이티브 GUID의 데이터를 사용하여 구성해야합니다.

System::Guid ^FromNativeGUID(const GUID &g) 
{ 
    return gcnew System::Guid(g.Data1, g.Data2, g.Data3, g.Data4[0], g.Data4[1], g.Data4[2], 
         g.Data4[3], g.Data4[4], g.Data4[5], g.Data4[6], g.Data4[7]); 
} 
+4

시스템 :: GUID를 값 형식입니다. 함수가 훌륭하게 작동하지만 반환 형식은 System :: Guid (System :: Guid^대신)이어야하며 gcnew를 삭제해야합니다. – Naaff

3

이전의 대답은 괜찮지 만, 이건 정말 충분해야한다 :

Guid FromNativeGUID(const GUID &guid) 
{ 
    return *reinterpret_cast<Guid *>(const_cast<GUID *>(&guid)); 
} 
관련 문제