C ++ / CLI-shell для C ++ для использования в качестве ссылки в C #

Название объясняет. У меня есть родные DLL C ++, которые я пишу обертки C ++ / CLI для, которые, в свою очередь, будут импортированы в C # в качестве ссылки.

Проблема в том, что в C # я не вижу classы, которые у меня есть в оболочке (импортированные из DLL).

Какие ключевые слова я должен использовать и КАК повторно объявить мои собственные объекты C ++, чтобы они стали видимыми на C #?

Хорошо, учебник. У вас есть class NativeClass classа C ++, который вы хотите открыть для C #.

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

1) Создайте проект C ++ / CLI. Ссылка на вашу библиотеку C ++ и заголовки.

2) Создайте class-оболочку, который предоставляет методы, которые вы хотите. Пример:

 #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) Добавьте ссылку на свой проект C ++ / CLI в проекте C #.

4) Используйте тип обертки внутри оператора using :

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

Оператор using вызывает Dispose (), который немедленно запускает деструктор и уничтожает собственный объект. В противном случае у вас будет утечка памяти и, вероятно, умрет ужасно (не вы, программа). Примечание. Метод Dispose () создан для вас волшебным образом .

  • Как загрузить сборку во время выполнения и создать экземпляр classа?
  • Как использовать сторонний DLL-файл в Visual Studio C ++?
  • Регистрация DLL CPP в COM после установки с помощью установщика Wix Msi
  • Встраивание DLL в скомпилированный исполняемый файл
  • Как исправить недостающую msvcp110.dll
  • Копирование зависимостей DLL в Visual Studio
  • Почему происходит сбой этой программы: передача std :: string между DLL
  • что означает __declspec (dllimport)?
  • Для чего используется <x> .dll?
  • Есть ли способ найти все функции, открытые dll
  • Создание streamа в DllMain?
  • Давайте будем гением компьютера.