1

我有一个 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 才能在 DB 中使用它,但 System.Guid 显然与 _GUID 不同,而且我在 C++ 方面非常糟糕。

有人可以帮忙吗?

提前致谢,

4

1 回答 1

1

MSDN 提供了有关如何执行此操作的便捷教程,请注意,该代码也可以在需要时在 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;  
}  
于 2017-03-06T16:48:26.280 回答