Ответ 1
Плагины AFAIK Qt реализованы как разделяемые библиотеки (.so в Unix/Linux и DLL в Windows). Различия между ними такие же, как и с плагинами и библиотеками в целом.
Это означает, что архитектура подключаемого модуля не зависит от метода компоновки. Они, как правило, считаются подключаемыми/динамическими связями и не подключаемыми/статическими связями.
Основное приложение определяет контракт интерфейса и обмена данными (т.е. API), через который отдельные модули могут взаимодействовать с приложением и раскрывать функциональность через приложение. Просто отправка новых модулей в DLL не учитывает необходимость того, чтобы приложение само обнаружило эти библиотеки DLL, и знать, как выполнять логику внутри. В этом суть архитектуры плагина. В общем, DLL предоставляет только список процедур или функций. Переменные, классы, объекты внутри dll напрямую не доступны для внешних процессов. Написание плагина включает в себя перемещение большинства или всего соответствующего кода в DLL, где все переменные и объекты могут быть напрямую связаны.
Что-то вроде Eclipse, в котором вы размещаете плагин в предопределенном каталоге, и в следующий раз, когда вы нажмете на какое-то Меню, вы увидите новые записи. Все это без перезагрузки app
или запуска новой версии exe
.