Название: Дополнения к приложению. Плагины Отправлено: G-virus от Февраль 17, 2011, 11:56 Привет всем. Не знал, куда засунуть эту тему, засунул сюда. В общем, нужно такое:
есть приложение Qt. И нужно к этому приложению подгружать дополнительные формы с кнопками и т.п., со своими функциями, динамически, чтобы не перекомпиливать каждый раз основное приложение. Как я понял, нужно писать "Библиотека С++" в Qt Creator. Там дальше Надстройка и т.д. Не совсем понимаю, что в какой последовательности делать и т.п., расскажите в кратце. И можно ли как-то объект с основного приложения передать параметром в другое? то есть чтобы вот эта подпрограмма, которая загружается динамически, пользовалась объектами из основного? Название: Re: Дополнения к приложению. Плагины Отправлено: Пантер от Февраль 17, 2011, 12:00 Посмотри Plug & Paint Example в ассистенте.
Название: Re: Дополнения к приложению. Плагины Отправлено: asvil от Февраль 17, 2011, 12:02 Могу посоветовать изобрести web броузер воспользовавшись QtScript[_bindings_generator]. А так да, тысячу лет назад было модно придумывать динамические библиотеки для того, чтобы динамически съедать память.
Вообще динамические библиотеки - это нифига не плагины, это вынужденная мера в условиях аппаратной недостаточности. Название: Re: Дополнения к приложению. Плагины Отправлено: GreatSnake от Февраль 17, 2011, 12:37 Цитировать Вообще динамические библиотеки - это нифига не плагины С чего бы это?Цитировать это вынужденная мера в условиях аппаратной недостаточности. Причём здесь "аппаратная недостаточность"?Название: Re: Дополнения к приложению. Плагины Отправлено: Blackwanderer от Февраль 17, 2011, 12:43 Цитировать Вообще динамические библиотеки - это нифига не плагины С чего бы это?плагин = dll dll != плагин Плагин - это библиотека, подключаемая во время выполнения программы. Программа вполне может работать и без плагина. Обычная dll подключается во время компиляции. Без нее программа просто не запустится. Название: Re: Дополнения к приложению. Плагины Отправлено: SASA от Февраль 17, 2011, 12:45 Могу посоветовать изобрести web броузер воспользовавшись QtScript[_bindings_generator]. А так да, тысячу лет назад было модно придумывать динамические библиотеки для того, чтобы динамически съедать память. О задвинул-то ;DВообще динамические библиотеки - это нифига не плагины, это вынужденная мера в условиях аппаратной недостаточности. Название: Re: Дополнения к приложению. Плагины Отправлено: GreatSnake от Февраль 17, 2011, 12:50 Единственное (искуственное) отличие динамической библиотеки от плагина - это то, что
динамическая библиотека подружается при запуске, а плагин при определенных условиях. Причем никто не мешает подгрузить библиотеку позже, если её экспортнутые символы не требуются при старте. Название: Re: Дополнения к приложению. Плагины Отправлено: Blackwanderer от Февраль 17, 2011, 12:57 Единственное (искуственное) отличие динамической библиотеки от плагина - это то, что Не совсем. Главное различие в том, что плагин - это такая библиотека, отсутствие которой никак не сказывается на работоспособности программы.динамическая библиотека подружается при запуске, а плагин при определенных условиях. Причем никто не мешает подгрузить библиотеку позже, если её экспортнутые символы не требуются при старте. Т.е. программа просто не заметит, что этой библиотеки нет. Соответственно, загрузка во время выполнения - это необходимое но не достаточное условие для того, чтобы называть библиотеку плагином. Название: Re: Дополнения к приложению. Плагины Отправлено: GreatSnake от Февраль 17, 2011, 13:10 Цитировать Не совсем. Главное различие в том, что плагин - это такая библиотека, отсутствие которой никак не сказывается на работоспособности программы. Не согласен, т.к. всё зависит от важности плагина, от архитектуры приложения и условий.Например, ваше приложение зависит от Oracle и не находит qsqloci драйвер, без которого оно не в состоянии работать. Название: Re: Дополнения к приложению. Плагины Отправлено: Blackwanderer от Февраль 17, 2011, 13:24 Если ваша программа предоставляет доступ только к Oracle, то ваш драйвер - никакой не плагин, не зависимо от того как и когда вы его подгружаете. Без него программа не нужна ни одному человеку, а сл-но неработоспособна. Если она предоставляет доступ ко всем ей известным базам данных, то отсутствие драйвера никак не скажется на логике работы программы. Да, вы лишитесь некоторого функционала, но это - дополнительный функционал, никак не влияющий на работу основной программы и не зависящий от нее. Программа может прекрасно работать и без данного драйвера Он не является необходимой частью программы. В этом случае ваш драйвер - плагин.
Название: Re: Дополнения к приложению. Плагины Отправлено: GreatSnake от Февраль 17, 2011, 13:28 Ок, убедили)
Название: Re: Дополнения к приложению. Плагины Отправлено: G-virus от Февраль 17, 2011, 22:08 Посмотрел Plug & Paint. Почитал про плагины. Честно говоря, нихрена не понял ;D Можно просто и по-русски?
нужно в проге, которая подгружает плагины, добавить функцию, в которую передавать параметр - имя плагина и грузить через QPluginLoader. А чтобы создать сам плагин, нужно создать проект "Библиотека С++ -> Надстройка", и в нем реализовать класс-интерфейс с виртуальными функциями, добавив в конец Q_EXPORT_PLUGIN2(имя_плагина, имя_класса) ? Название: Re: Дополнения к приложению. Плагины Отправлено: maint от Февраль 16, 2012, 16:34 поспорили, поспорили в стороннем, а мыслей не у кого не появилось. А жаль. Столкнулся, хотелось бы знать
Название: Re: Дополнения к приложению. Плагины Отправлено: Kurles от Февраль 16, 2012, 18:20 поспорили, поспорили в стороннем, а мыслей не у кого не появилось. А жаль. Столкнулся, хотелось бы знать Тыц. (http://www.youtube.com/watch?v=VNiKRoffj3A)Видео урок, правда на английском, но все разжевано. Кстати, довольно не плохая серия уроков у дядьки вышла :) |