C ++ плагин система DLL

0

Я хотел бы добавить систему плагина dll к моему c++ приложению.

После прочтения всего, что я смог найти по этой теме, я буду использовать интерфейс класса, который имеет только чистые виртуальные функции и базовые типы данных. Каждая DLL-плагин выводит классы из этого интерфейса и выставляет их с помощью механизма регистрации. Он будет включать механизм уничтожения для обеспечения того, чтобы новые и удаленные для этого класса не вызывались через границу DLL.

Но где мне импортировать и экспортировать интерфейс? Нужно ли мне делать какую-то фиктивную DLL без кода, только экспортируя объявление класса? Или я не могу импортировать/экспортировать класс в любом месте и просто использовать его в качестве заголовка в приложении и плагинах, передавая только указатели на класс между приложением и плагинами?

благодаря

Теги:
dll
plugins
interface
abstract

1 ответ

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

Я предлагаю вам следующий подход:

  • Объявите свой интерфейс плагина внутри общего файла заголовка (используемого приложением и плагином)
  • В вашем интерфейсе должны быть только виртуальные чистые методы = 0, нет элементов данных.
  • Виртуальные методы должны использовать только примитивный тип и структуры (например, для интерфейса C). Это для совместимости с ABI. Таким образом, плагин может быть разработан с использованием разных компиляторов
  • Интерфейс плагина должен предусматривать два метода: CreateObject() и FreeObject(). Код ABI библиотеки DLL знает, как создать свой объект и удалить его объект.

Надеюсь, это поможет вам.

  • 0
    ОК, поэтому мне не нужно экспортировать классы интерфейса, просто чтобы поделиться заголовком.

Ещё вопросы

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