2014-01-29 3 views
0

У меня есть плагин, написанный для программы на C++ (как .dll). Интерфейс этого .dll полагается на что-то вроде следующего:выставляя API на C++ dll из C#

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

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

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

ответ

1

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

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

+0

Это будет означать, что я не смогу использовать существующую .dll, не изменяя ее правильно? Даже если я использую COM в C#. – nakiya

+0

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

Смежные вопросы