предоставление API для C ++ DLL из C #

0

У меня есть плагин, написанный для программы C++ (как.dll). Интерфейс, на котором этот.dll опирается, выглядит примерно так:

class Platform
{
    virtual bool callSomeFunc() = 0;
    //etc.
}

DLL предоставляет платформе объект через extern "C" функцию extern "C". Довольно стандартный. DLL может взаимодействовать с платформой через объект класса, реализующего вышеуказанный интерфейс. Довольно стандартный вариант.

Теперь нам нужно написать платформу в С#. Идеально не переписывать плагин, потому что у нас есть большая часть нашего кода в плагине. Есть ли способ сделать это? (Что-то вроде передачи объекта С# для объекта Platform ожидает.dll?)

Теги:
interop

1 ответ

1
Лучший ответ

Если вы хотите реализовать объект в коде С#, который может использовать неуправляемый код, вы больше не сможете использовать класс C++. Код C++ может создавать классы C++. Код С# не может.

Очевидная вещь - использовать COM для вашего взаимодействия. Код С# может реализовывать и потреблять COM-объекты.

  • 0
    Это будет означать, что я не смогу использовать существующий .dll, не изменив его, верно? Даже если я использую COM в C #.
  • 0
    Ну, вы могли бы поддерживать два механизма бок о бок. Суть в том, что использование классов C ++ ограничивает вас использованием только кода C ++. Действительно, только с использованием кода, созданного с помощью того же компилятора. Код C ++ не подходит для взаимодействия. COM предназначен исключительно для бинарного взаимодействия.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню