c# c++ dll c++-cli

Contenedor C++/CLI para C++ nativo para usar como referencia en C#



dll c++-cli (1)

Título explica. Tengo dlls C ++ nativos para los que estoy escribiendo C ++ / CLI wrappers, que a su vez serán importados en C # como referencia.

El problema es que en C # no veo las clases que tengo en el contenedor (importado de DLL).

¿Qué palabras clave debo usar y CÓMO volver a declarar mis objetos C ++ nativos para que se vuelvan visibles en C #?


Ok, tutorial. Tienes una clase NativeClass C ++ que quieres exponer a C #.

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

1) Crea un proyecto de C ++ / CLI. Enlace a su biblioteca C ++ y encabezados.

2) Cree una clase contenedora que exponga los métodos que desea. Ejemplo:

#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) Agregue una referencia a su proyecto C ++ / CLI en su proyecto C #.

4) Use el tipo de envoltura dentro de una declaración using :

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

La instrucción using garantiza que se llama a Dispose (), que ejecuta inmediatamente el destructor y destruye el objeto nativo. De lo contrario, tendrá fugas de memoria y probablemente morirá horriblemente (no usted, el programa). Nota: El método Dispose () se crea mágicamente para usted .