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ê .