2017-04-10 110 views
0

我有一個原生C++ DLL並參照通的一些功能clr如何使用原生C++ dll的參考'&'參數調用函數?

&

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

這正常工作在本地C++。我裹着C++在CLR

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

但它不能編譯,因爲它不允許在管理類成員

對象不能轉換爲本地引用

?我能做什麼? 謝謝!

+0

嘗試'IExport ** ppExport' –

+0

在C#中想象它寫成'DestroyExportObj(無效** pExport)',所以''DestroyExportObj(參考文獻的IntPtr pExport)'' – xanatos

+0

不能轉換「CLI :: interior_ptr 「到」IExport **「 – Mix

回答

0

在namaged C++中,你只能使用指向本地類的指針。因此,您可以嘗試使用指向指針的指針或僅使用IExport的包裝器。我認爲,使用包裝更好和理解。

+0

無法將'cli :: interior_ptr '轉換爲'IExport **' – Mix