clr 如何使用本机 c++ dll 的引用'&'参数调用函数?

How clr calls functions with reference '&' parameters of native c++ dll?

本文关键字:参数 调用 函数 引用 何使用 本机 c++ dll clr      更新时间:2023-10-16

我有一个本机 c++ dll 和一些带有引用传递的函数

&

void DestroyExportObj(IExport* &pExport)
{
    pExport->Release();
    pExport = nullptr;
}

这在本机 c++ 中可以正常工作。我用clr包装了c ++

public ref class Class1
{
    IExport* _inst;
    ...
    void Class1::Release()
    {
        if (_inst != nullptr)
        {
            DestroyExportObj(_inst);
        }
    }
}

但它无法编译,因为

无法将托管类成员中的对象转换为本机引用

是不允许的吗?我能做什么?谢谢!

在命名的 c++ 中,您只能使用指向本机类的指针。因此,您可以尝试使用指针到指针或仅对IExport使用包装器。我认为,使用包装器更好,更可靠。