这是基本的,应该很容易找到。在我的搜索中,我得到的是更复杂的解决方案。转换字符串,编组,固定对象。如何在C ++ / CLI中简单地从c ++ / CLI int ^指针转换为本机int *。
我的职能部门是
void Open(int ^Hndl)
{
void Unmanaged_Open(Hndl); // How do you pass the pointer to this
}
,其中 void Unmanaged_Open(int * handle);
答案 0 :(得分:1)
以下是在C ++ / CLI中实现输出参数的方法,例如C#的void func(out int x)
。请注意,没有int^
。
void Open([OutAttribute] int% retval)
{
int result;
if (!UnmanagedOpen(&result))
throw gcnew Exception("Open failed!");
retval = result;
}
请注意,简单地返回值可能更好。当返回值用于错误检查时,Out参数大多出现在本机函数中。您可以在.NET中使用异常进行错误检查,如下所示:
int Open()
{
int result;
if (!UnmanagedOpen(&result))
throw gcnew Exception("Open failed!");
return result;
}
或者如果预期失败(例如,不受信任的输入),请实现TryXYZ模式(described on MSDN):
bool TryOpen([OutAttribute] int% retval)
{
retval = 0;
int result;
if (!UnmanagedOpen(&result)) return false;
retval = result;
return true;
}