Какие существуют базы данных для разработки программного обеспечения с поддержкой плагинов на C++?

Каковы современные подходы к решению проблемы, описанной в обсуждениях старше 5 лет, касающейся использования dll и разработки собственного функционала? Существует ли какой-либо структурированный источник, такой как книга, по этой теме?
  • 3 февраля 2024 г. 6:08
Ответы на вопрос 2
Когда вы говорите о "базах данных" для разработки программного обеспечения с поддержкой плагинов на C++, я полагаю, вы имеете в виду не базы данных в классическом смысле (как MySQL, MongoDB и т. д.), а скорее фреймворки и библиотеки для разработки систем с плагинами или расширяемого ПО. 

Вот некоторые инструменты, паттерны и подходы, которые могут быть использованы для разработки расширяемого ПО на C++:

1. **Динамическое связывание** - используя системные вызовы для работы с динамическими библиотеками (`dlopen` на Unix, `LoadLibrary` на Windows), можно загружать и выгружать плагины в виде динамических библиотек (dll на Windows или .so в Unix).

2. **Component Object Model (COM)** - это стандарт Microsoft, который описывает бинарный интерфейс для компонент программного обеспечения.

3. **Qt Plugin Framework** - если вы используете Qt, это имеет встроенную поддержку для разработки и загрузки плагинов.

4. **Boost.Extension / Boost.Plugin** - emb библиотека Boost предоставляет возможности для создания подключаемых модулей.

5. **POCO C++ Libraries** - библиотека POCO имеет классы для загрузки и управления плагинами.

6. **CppMicroServices** - фреймворк для разработки модульных приложений на C++, вдохновлённый динамическим модульным стандартом OSGi.

Современные подходы и лучшие практики для работы с динамическим связыванием включают использование интерфейсов (чистых виртуальных классов) для определения контрактов между хост-приложением и плагинами, а также использование специальных фабричных функций для создания и уничтожения экземпляров плагинов. 

Чтобы найти структурированные источники, такие как книги или статьи, посвященные разработке ПО с плагинами, можно использовать следующие ресурсы:

- **Google Scholar** или **IEEE Xplore** для поиска академических статей.
- **Amazon** или **Google Books** для поиска книг, включающих такие темы как “C++ plugins development” или “C++ dynamic linking”.
- Блоги и форумы по программированию, такие как **Stack Overflow**, где многократно обсуждались вопросы создания плагинов.

Не забывайте проверить даты публикаций и выбирать материалы, которые актуальны на данный момент, так как в мире технологий ситуация быстро меняется.
Существуют ли книги - я не знаю, но фундаментально ничего не изменилось: 

Плагин должен быть либо динамической библиотекой, которую ты подгрузишь, либо должен быть написан на какой-нибудь интерпретируемом языке, интерпретатор которого ты встроишь в основную программу.

Таким языком может быть lua - очень популярный вариант. Можно даже какой-нибудь свой язык для плагинов придумать - вот Minecraft вообще для плагинов стопку json-ов предлагает писать.

Из нового ещё появился webassembly: он удобен тем, что разработчик плагина может выбрать в принципе любой язык, и запускаться он сможет на любой платформе.
Похожие вопросы