2017-04-10 5 views
0

나는 네이티브 C++ DLL이 네이티브 C에서 제대로 작동clr이 네이티브 C++ DLL의 참조 '&'매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

&

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

참조 패스와 일부 기능을 ++ 있습니다. 이 허용되지 않는 관리 클래스 멤버에

객체가 기본 참조

로 변환 할 수 있기 때문에 나는 C++ CLR

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

에서 포장하지만 컴파일 수 없습니다? 내가 무엇을 할 수 있을지? 감사합니다.

+0

시도'IExport는 C#에서 ** ppExport' –

+0

그것이 DestroyExportObj (무효 ** pExport)'으로 기록 상상'그래서''DestroyExportObj가 (심판을 IntPtr pExport가)'' – xanatos

+0

은 CLI "변환 할 수 없습니다 : interior_ptr "to"IExport ** " – Mix

답변

0

네이밍 된 C++에서 네이티브 클래스에 대한 포인터 만 사용할 수 있습니다. 따라서 포인터를 포인터로 사용하거나 IExport 용 래퍼 만 사용해도됩니다. 제 생각에는 래퍼를 사용하는 것이 좋습니다.

+0

는'cli :: interior_ptr '을'IExport **'로 변환 할 수 없습니다. – Mix