我是 C++/CLI 的新手,我正在尝试将 native C++ GUID 转换为我的 C++/CLI Guid^。尝试转换时:
BlockInfo^ blockInfo = gcnew BlockInfo();
blockInfo->BlockFilterGuid = ba.BlockAllFilter.subLayerKey;
...我收到以下错误:
error C2440: '=' : cannot convert from 'GUID' to 'System::Guid ^'
我知道我的问题的根源是我试图从非托管类型转换为托管类型,但我对 C++ 或 C++/CLI 的精通程度不足以知道如何解决该问题。
最佳答案
native GUID
已定义:
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
您需要分配一个 System::Guid
并使用 native 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]);
}
关于casting - 将非托管 GUID 转换为托管 Guid^,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2306062/