плагины (qt4)

Модератор: Модераторы разделов

Аватара пользователя
chups
Сообщения: 79
ОС: Debian Lenny GNU/Linux

плагины

Сообщение chups »

здравствуйте. прошу уважаемых форумчан просветить меня в написании на куте плагинов или подключаемых модулей или so(dll) - не знаю как правильно в данном случае назвать. Что требуется: написать приложение, которое обеспечивает простое GUI, весь функционал реализуется через динамически подключаемые модули. Задача в общем-то решена частично: подключаемый функционал реализуется как плагин приложения и при помощи QPluginLoader в основном приложении нормально подключается. Проблем не возникает, если приложение использует динамическую куте, но если я хочу собрать приложение статически(т.е. что бы запускалось на системах где нет библиотек куте), то нужные мне плагины не подключаются. я смотрел пример в ассистенте plug&paint - несколько не то что мне надо. Там показано как реализовать статический плагин(static plugin), но он линкуется к конечному приложению(т.е. на выходе один файл), а мне надо что бы приложение отдельно, плагины(модуль, dll) - отдельно. я написал какой-то модуль - кинул в папку с приложением - и в приложении у меня добавилась какая-то функциональность.

в какую сторону копать мне надо? пока есть мысль что для моих целей подойдет QLibrary, но еще до конца не вьехал как.

если надобно, вот pro-file плагина, который успешно подключается динамически:

Код: Выделить всё

TEMPLATE      = lib
CONFIG       += plugin
HEADERS       = ../../ciphersPluginInterface.h vigener.h
SOURCES       = vigener.cpp
DESTDIR       = ../

где ciphersPluginInterface.h - хедер в котором объявлен интерфейс
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: плагины

Сообщение NickLion »

Может лучше оставить динамическую линковку и просто копировать с программой библиотеки Qt?
Дело в том, что у Вас и программа и модуль используют Qt. Если линковать статически, то каждая получит по копии Qt. Что в общем-то совсем не хорошо. Во-первых, лишние расходы, во-вторых, нет уверенности в том, что такое не будет глючить.
Спасибо сказали:
Аватара пользователя
chups
Сообщения: 79
ОС: Debian Lenny GNU/Linux

Re: плагины

Сообщение chups »

да, пожалуй вы правы. тогда такой вопрос: я когда ставил динам. куте под винду, помню библиотеки QtGui4.dll и QtCore4.dll имели довольно приличные размеры - около 70-80Мб каждая. ну а мне же не нужна полностью вся библиотека. в таких программах как psi я видел что кутешные библиотеки идут урезанные, т.е. их размер намного меньше дефолтных. как тогда получить нужную тебе библиотеку урезанной, с нужным для твоей программы ф-ционалом?

прежний вопрос пока в силе, хотя и понимаю что скорей всего он в выбраном направлении плохо осуществим.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: плагины

Сообщение NickLion »

Под виндой:
QtCore4.dll - 2.3 Мб
QtGui4.dll - 9.1 Мб
Не путайте с отладочными версиями, они действительно много весят, но ведь они и не потребуются.

Для того чтобы урезать - надо будет перекомпилировать Qt вместе с проектом.
Спасибо сказали:
Аватара пользователя
chups
Сообщения: 79
ОС: Debian Lenny GNU/Linux

Re: плагины

Сообщение chups »

хм, может быть. ставил скачаную с офф. сайт версию библиотеки. она что по умолчанию идет отладочная?
поставил на закачку сейчас вот эту: qt4.6.2, посмотрим что она из себя представляет.

Код: Выделить всё

Для того чтобы урезать - надо будет перекомпилировать Qt вместе с проектом.

а вот это не очень понял. что значит вместе с проектом? как саму куте перекомпилить с необходимыми тебе параметрами я понимаю. а вот что значит "вместе с проектом"?
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: плагины

Сообщение NickLion »

chups писал(а):
06.06.2010 14:33
хм, может быть. ставил скачаную с офф. сайт версию библиотеки. она что по умолчанию идет отладочная?

там есть и отладочная и релиз версии.
QtCore4d.dll - отладочная версия.
При перекомпиляции не забудьте тоже 2 версии сделать.

chups писал(а):
06.06.2010 14:33

Код: Выделить всё

Для того чтобы урезать - надо будет перекомпилировать Qt вместе с проектом.

а вот это не очень понял. что значит вместе с проектом? как саму куте перекомпилить с необходимыми тебе параметрами я понимаю. а вот что значит "вместе с проектом"?

Неудачно выразился наверное. Имел в виду, что проект перекомпилить с указанной перекомпиленной Qt. Чтобы проблем не было.
-ftree-dce по идее для библиотек не отработает. Вот если такое работает, то тогда действительно имеет смысл их вместе компилировать.
Спасибо сказали: