Wrapper C ++ / CLI para C ++ nativo para usar como referência em c #

Título explica. Eu tenho dlls C ++ nativos que estou escrevendo wrappers C ++ / CLI para, que por sua vez será importado em C # como referência.

O problema é que em c # eu não vejo as classs que tenho no wrapper (importado da DLL).

Quais palavras-chave devo usar e como declarar novamente meus objects C ++ nativos para se tornarem visíveis em C #?

Ok, tutorial. Você tem uma class C ++ NativeClass que deseja expor para C #.

 class NativeClass { public: void Method(); }; 

1) Crie um projeto C ++ / CLI. Link para sua biblioteca e headers C ++.

2) Crie uma class de wrapper que expõe os methods desejados. Exemplo:

 #include "NativeClass.h" public ref class NativeClassWrapper { NativeClass* m_nativeClass; public: NativeClassWrapper() { m_nativeClass = new NativeClass(); } ~NativeClassWrapper() { this->!NativeClassWrapper(); } !NativeClassWrapper() { delete m_nativeClass; } void Method() { m_nativeClass->Method(); } }; 

3) Adicione uma referência ao seu projeto C ++ / CLI no seu projeto C #.

4) Use o tipo de wrapper dentro de uma instrução using :

 using (var nativeObject = new NativeClassWrapper()) { nativeObject.Method(); } 

A instrução using garante Dispose (), que imediatamente executa o destruidor e destrói o object nativo. Você também terá vazamentos de memory e provavelmente morrerá horrivelmente (não você, o programa). Nota: O método Dispose () é criado magicamente para você .