У меня есть плагин, написанный для программы C++ (как.dll). Интерфейс, на котором этот.dll опирается, выглядит примерно так:
class Platform
{
virtual bool callSomeFunc() = 0;
//etc.
}
DLL предоставляет платформе объект через extern "C"
функцию extern "C"
. Довольно стандартный. DLL может взаимодействовать с платформой через объект класса, реализующего вышеуказанный интерфейс. Довольно стандартный вариант.
Теперь нам нужно написать платформу в С#. Идеально не переписывать плагин, потому что у нас есть большая часть нашего кода в плагине. Есть ли способ сделать это? (Что-то вроде передачи объекта С# для объекта Platform
ожидает.dll?)
Если вы хотите реализовать объект в коде С#, который может использовать неуправляемый код, вы больше не сможете использовать класс C++. Код C++ может создавать классы C++. Код С# не может.
Очевидная вещь - использовать COM для вашего взаимодействия. Код С# может реализовывать и потреблять COM-объекты.