我有一个 C++/CLI 方法,ManagedMethod
带有一个输出参数,该参数将由本机方法修改,如下所示:
// file: test.cpp
#pragma unmanaged
void NativeMethod(int& n)
{
n = 123;
}
#pragma managed
void ManagedMethod([System::Runtime::InteropServices::Out] int% n)
{
pin_ptr<int> pinned = &n;
NativeMethod(*pinned);
}
void main()
{
int n = 0;
ManagedMethod(n);
// n is now modified
}
ManagedMethod
返回后, 的值n
已按我的预期进行了修改。到目前为止,我能够编译它的唯一方法是使用pin_ptr
inside ManagedMethod
,那么实际上 pinning 是正确/唯一的方法吗?还是有更优雅的传递n
方式NativeMethod
?