Возможно ли сделать объектно-ориентированное API через DLL (GCC, C++)? Добрый день.
Вопрос следующий — пусть есть абстрактное приложение, к которому хочется добавить некоторое API для плагинов. Плагины скорее всего будут представлять собой DLL'ки, которые динамически подгружаются основным кодом.
В Java можно сделать интерфейс IPlugin, а в плагине расширить его: public class MySuperPlugin implements IPlugin, после чего спокойно подгружать тысячи классов по именам. Можно ли сделать что-то похожее в C++? Я знаю, что можно спокойно подгружать обычные функции (не члены класса) из DLL. Пока придумались только такие костыли: делаем много функций «переходников», каждая из которых вызывает соответствующий член класс. Но это ужас.
Как решить? Ведь, наверное, можно.

21 Авг 2019 в 07:10
178 +1
0
Ответы
1

Да, возможно создать объектно-ориентированное API через DLL в C++. Для этого вам нужно использовать механизмы динамической загрузки библиотек, такие как функции LoadLibrary и GetProcAddress.

Один из способов реализации подобного API в C++ - это использование интерфейсов (абстрактных классов) и фабрик (функций, возвращающих указатель на интерфейс). Вы можете определить интерфейс IPlugin, который будет содержать чисто виртуальные методы, а затем создать конкретные реализации этого интерфейса в плагинах.

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

Этот подход позволит вам динамически загружать и использовать плагины в вашем приложении, сохраняя при этом объектно-ориентированную структуру. Конечно, придется немного поплять с указателями на функции и управлением памятью, но это довольно стандартная практика при работе с динамическими библиотеками в C++.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир