Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: usefull от Июль 24, 2009, 16:25



Название: как собрать в виде библиотеки
Отправлено: usefull от Июль 24, 2009, 16:25
Здраствуйте.

Я хотел бы узнать у опытных специалистов. Можно ли собрать QT приложение в виде динамически подключаемой библиотеки и вызывать методы QT приложения. если можно то опишите пожалуйста всю процедуру


Название: Re: как собрать в виде библиотеки
Отправлено: BRE от Июль 24, 2009, 16:43
Ну так она по умолчанию собрана как динамическая библиотека (точнее несколько динамических библиотек).  ;)


Название: Re: как собрать в виде библиотеки
Отправлено: Rcus от Июль 24, 2009, 16:46
А мнение неопытных неспециалистов вас случайно не интересует? Я думаю речь идет про использование сходное с описанным в http://doc.trolltech.com/solutions/4/qtwinmigrate/winmigrate-walkthrough.html#plugin-extension


Название: Re: как собрать в виде библиотеки
Отправлено: usefull от Июль 24, 2009, 17:33
Может не понятно написал...

Вот у меня есть довольно большая программа стороннего разработчика (дальше Программа 1)... я хочу сделать к ней GUI-шку (дальше GUI-шка ;D), которая бы запускалась в новом thread-е и отображала какую либо информацию о происходящем в первичном продукте. Я могу добавить какието функции в исходный код Программы 1, но не могу повлиять на его сборку. Т.о. я не смогу воспользоваться qmake-ом. Ну вот поэтому я решил сделать GUI-шку в виде libGUI.so и подключать уже библиотеку к Программе 1... По подключению уже есть методы и сделать это не сложно. Но вот как собрать GUI-шку в таком виде...

Вопрос может быть совсем простой, но просто не имею опыта работы с make и qmake. И с libtool тоже кстати. подскажите в какую сторону копать... Разобраться сам попробую. Если же ткнете пальцем, то буду очень благодарен...


Название: Re: как собрать в виде библиотеки
Отправлено: lit-uriy от Июль 24, 2009, 17:40
usefull, в принципе мордочку в dll'ку засунуть можно. Однако, помни/знай мордочка написанная на Qt может работать только в главном потоке!


Название: Re: как собрать в виде библиотеки
Отправлено: usefull от Июль 24, 2009, 20:01
Нда, плохая новость... Так как все таки запихнуть в dll-ку? может получится чтонибудь сделать


Название: Re: как собрать в виде библиотеки
Отправлено: break от Июль 24, 2009, 23:13
Все сильно зависит от "Программы1" - там нет qmake - но Qt там есть? Или имеется возможность использовать Qt классы - тогда можно было бы использовать QPluginLoader - указывая ему напрямую вашу dll. Вообще упрощенный plugin loader можно и в голом C++ сваять - ничего сложного все обращения в классе который сидит в DLL через void* и ряд экспортных функций кот. с этим указателем работают

Код:
void* makeInstance();

void showDLLWindow( void * pWnd );
void closeDLLWindow( void * pWnd );

и т.д.

Внутри реализации каждой такой функции приведение указателя к реальному классу и работа с ним...

Когда то я так делал - все норм. работало, позже стал использовать QPluginLoader


Название: Re: как собрать в виде библиотеки
Отправлено: usefull от Июль 27, 2009, 13:25
Народ. Я проверил... У меня QT приложение нормально работает в новом thread-е. Так что каких-то новых методов не нужно (я благодарен за предложенные методы, просто я предложил такой метод изза сильных ограничений которые наложенны на обе программы). Пожалуйста распишите хотя бы в двух словах как собрать в виде библиотеки типа libGUI.so

Буду очень благодарен...


Название: Re: как собрать в виде библиотеки
Отправлено: usefull от Июль 28, 2009, 16:07
ВСем спасибо за участие... Я смог собрать как надо.