System.Guid到_GUID?

时间:2013-03-18 17:14:18

标签: c# c++ c++-cli

我有一个c ++项目,我试图从.net c#中使用。主要问题是在c ++中我有类似

的东西
static const GUID guid ={ 0x4be732d4, 0x3244, 0x4ad3, { 0x92, 0xbd, 0xf2, 0x80, 0x9d, 0xf0, 0x96, 0xf6 } };
HRESULT ActivateItem(String^ Name, String^ Var )
{
    hr = Item->SetId(&guid);
    StartItem(&guid);
}

From C# would be ActivateItem("someName", "someVar");

我需要在c#中创建GUID以在数据库中使用它,但System.Guid显然与_GUID不一样,而且在C ++中非常糟糕。

任何人都可以伸出援手吗?

提前致谢,

1 个答案:

答案 0 :(得分:1)

MSDN supplies a handy tutorial关于如何执行此操作,请注意,代码也可以在需要时在C ++ / CLI中使用。

从_GUID:

转换
System::Guid FromGUID(_GUID& guid) {  
   return System::Guid(guid.Data1, guid.Data2, guid.Data3,   
                guid.Data4[0], guid.Data4[1],   
                guid.Data4[2], guid.Data4[3],   
                guid.Data4[4], guid.Data4[5],   
                guid.Data4[6], guid.Data4[7] );  
}  

转换回_GUID:

_GUID ToGUID(System::Guid& guid) {  
   array<Byte>^ guidData = guid.ToByteArray();  
   pin_ptr<Byte> data = &(guidData[0]);    
   return *(_GUID*)data;  
}