我有一個C++/CLI方法,ManagedMethod
,與一個輸出參數,將通過一個本地方法這樣進行修改:的n
值已被修改,我期望C++/CLI方法調用本地方法修改int - 需要pin_ptr?
// 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
回報。到目前爲止,我已經能夠編譯的唯一方法是在ManagedMethod
中使用pin_ptr
,所以實際上只有這樣做纔是正確的方法?還是有一種更優雅的方式將n
傳遞給NativeMethod
?