非托管函数(纯c ++,如果重要的话):
void fooC(float& result);
我将包装器定义为(托管包装器,c ++ \ cli):
void foo(float% result) //managed interface, need to pass result back to caller
{
fooC(???);//how to call unmanaged function?
}
如何在包装器中传递引用参数?
答案 0 :(得分:5)
您无法将跟踪引用转换为非托管引用或指针。当传递的float是对象中的一个字段时,垃圾收集器会造成破坏。你需要使用临时的:
void foo(float% result) {
float temp;
fooC(temp);
result = temp;
}