Ответ 1
Хорошо, учебник. У вас есть класс С++ NativeClass
, который вы хотите выставить на С#.
class NativeClass {
public:
void Method();
};
1) Создайте проект С++/CLI. Ссылка на вашу библиотеку С++ и заголовки.
2) Создайте класс-оболочку, который предоставляет методы, которые вы хотите. Пример:
#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) Добавьте ссылку на свой проект С++/CLI в проекте С#.
4) Используйте тип оболочки внутри оператора using:
using (var nativeObject = new NativeClassWrapper()) {
nativeObject.Method();
}
Оператор using обеспечивает вызов Dispose(), который немедленно запускает деструктор и уничтожает собственный объект. В противном случае у вас будет утечка памяти и, вероятно, умрет ужасно (не вы, программа). Примечание: Метод Dispose() создан для вас волшебным образом.