Плагины

Системы плагинов в Qt: QPluginLoader, интерфейсы плагинов, динамическая загрузка модулей и расширяемая архитектура приложений. Пошаговые примеры создания хост-приложения и плагинов к нему.

Система плагинов

Архитектура plugin-based приложения: пример расширяемого редактора

Введение В заключительной статье цикла соберём вместе концепции из предыдущих девяти статей в цельную архитектуру — спроектируем расширяемый текстовый редактор, где функциональность форматирования, экспорта и подсветки синтаксиса реализована…

SSL

Подписывание и верификация плагинов для безопасности

Введение Система плагинов, загружающая произвольный код из файлов на диске, по своей природе расширяет поверхность атаки приложения — если злоумышленник может подменить файл легитимного плагина на вредоносный (через…

QML

Плагины QML: создание собственных расширений через QQmlExtensionPlugin

Введение Помимо плагинов общего назначения, рассмотренных в предыдущих статьях, у Qt Quick есть собственный специализированный механизм плагинов — QQmlExtensionPlugin, позволяющий упаковать набор QML-типов (C++ классы, зарегистрированные для использования…

Система плагинов

Hot-reload плагинов во время работы приложения

Введение Во время разработки плагина перезапуск всего основного приложения после каждого изменения кода плагина замедляет цикл разработки. Hot-reload — возможность выгрузить старую версию плагина и загрузить новую, пересобранную…

Система плагинов

Песочница для плагинов: изоляция и обработка крашей сторонних плагинов

Введение Плагин, написанный сторонним разработчиком и загруженный в адресное пространство основного процесса через QPluginLoader, технически имеет полный доступ ко всей памяти процесса — баг или преднамеренно вредоносный код…

Система плагинов

Метаданные плагинов через JSON (Q_PLUGIN_METADATA) и поиск по ним

Введение Помимо самого IID интерфейса, плагин может нести произвольные дополнительные метаданные — версию, автора, список поддерживаемых форматов файлов, требования к окружению — через JSON-блок, встроенный непосредственно в Q_PLUGIN_METADATA.…

Система плагинов

Статические vs динамические плагины в Qt: когда что выбрать

Введение Qt поддерживает два принципиально разных режима использования плагинов: динамические (классический случай — отдельные библиотеки, загружаемые в рантайме через QPluginLoader, разобранный в предыдущих статьях) и статические (плагин компилируется…