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 .