У меня есть метод ++/CLI C, ManagedMethod
, с одним выходным аргументом, который будет изменен с помощью собственного метода как такового:Метод C++/CLI вызывает собственный метод для изменения int-need 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
}
Once ManagedMethod
возвращается, значение n
было изменено, как я бы ожидать. До сих пор единственным способом, которым я смог его собрать, является использование pin_ptr
внутри ManagedMethod
, так что это на самом деле правильный/единственный способ сделать это? Или есть более элегантный способ пройти n
до NativeMethod
?