Название: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: Deaf_Dumb_Blind от Октябрь 31, 2008, 20:08
Есть 2 варианта, как вообще деплоить Qt приложение - статически слинковать и запаковать в инсталлер, либо слинковать динамически и в инсталлер запаковать так же все необходимые дллки. Но у меня, к сожалению, ничего не выходит ни тем, ни другим способом. Цитировать Ensure that you are using a shared Qt library; you cannot use the plugins with a static build. Но, с другой стороны, в ассистанте, я нашел совершенно другую инфу:Цитировать Plugins can be linked statically against your application. If you build the static version of Qt, this is the only option for including Qt's predefined plugins. далее идет список плагинов, среди которого есть qsqlite и инструкция как их подключать:When compiled as a static library, Qt provides the following static plugins: вот ссылка: http://doc.trolltech.com/4.3/plugins-howto.html#static-plugins Я делаю, все как тут написано: собираю Qt статически: "configure.exe -static", использую макрос Q_IMPORT_PLUGIN(qsqlite), в .pro файл добавляю строчку: QTPLUGIN += qsqlite Но при сборке, компилятро выдает ошибку "undefined reference to qt_plugin_instance_qsqlite" Не могли бы вы подсказать, что я делаю неверно? 2) При динамической линковке возникают другие проблемы. Плагин грузится из кутешной директории... А мне надо чтобы он загрузился, скажем, из <app dir>/plugins. Тролтеховцы предлагают 3 способа решения проблемы: [list=1]
Пробовал заюзать второй вариант, писал в приложении: Код Это мне не помогло, при коннекте в базе QDatabase возвращал ошибку "cannot load driver" Как использовать qt.conf я совсем не понял... Я пытался в одной папке с .exe создать файл qt.conf следущего содержания: Код или такого: Код и такого Код Ни то, ни другое, ни третье не помогло( Подскажите, пожалуйста, что я не так делал :-[ Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: Rcus от Октябрь 31, 2008, 20:24 configure --help
Цитировать turned on. попробуйте при конфигурировании добавить к ключу -static еще -qt-sql-sqlite-qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library. -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to at run time. Available values for <driver>: mysql psql oci odbc tds db2 + sqlite sqlite2 ibase Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: Detonator от Октябрь 31, 2008, 21:22 Цитировать Ensure that you are using a shared Qt library; you cannot use the plugins with a static build. Но, с другой стороны, в ассистанте, я нашел совершенно другую инфу: Я так понял что потом новые плугины ты не сможешь подключать динамически, а все необходимые плугины ты должен сразу линковать статически. Хотя я статическую линковку сам пока не осилил, каких-то функций при линковке все равно не хватает Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: Deaf_Dumb_Blind от Октябрь 31, 2008, 22:56 Цитировать Ensure that you are using a shared Qt library; you cannot use the plugins with a static build. Но, с другой стороны, в ассистанте, я нашел совершенно другую инфу: Я так понял что потом новые плугины ты не сможешь подключать динамически, а все необходимые плугины ты должен сразу линковать статически. Хотя я статическую линковку сам пока не осилил, каких-то функций при линковке все равно не хватает Это понятно, что при статической линковке потом будет невозможно подключать новые дллки. В этом то и весь смысл что все библиотеки собираются в 1 .exe файл. вот из моей первой ссылочки цитата: Цитировать Plugins can be linked statically against your application. If you build the static version of Qt, this is the only option for including Qt's predefined plugins. з.ы сейчас попробую собрать либу с ключем -qt-sql-sqlite Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: DarkPhoenix от Ноябрь 01, 2008, 10:09 под виндой делаю так:
компилю проект, в каталог с exe кладу все необходимые dll, если проект с SQLite в каталоге с ехе создаю папку sqldrivers, туда кладу qsqlite4 и все работает. линковка динамическая. Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: Deaf_Dumb_Blind от Ноябрь 01, 2008, 10:29 попробуйте при конфигурировании добавить к ключу -static еще -qt-sql-sqlite Спасибо, заработало )))под виндой делаю так: я пробовал так сделать, но у меня не получилось че-то... QSqlDatabase выдавал такой lastError() "driver not loaded".компилю проект, в каталог с exe кладу все необходимые dll, если проект с SQLite в каталоге с ехе создаю папку sqldrivers, туда кладу qsqlite4 и все работает. линковка динамическая. аааааааа.. я кажись создавал такие папки ..\plugins\sqldrivers попробую вечером без plugins Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: DarkPhoenix от Ноябрь 01, 2008, 10:31 у меня тоже выдавало такую ошибку, пока не сделал как описал выше.
пример содержимого каталога: file - mingwm10.dll file - QtCore4.dll file - QtGui4.dll file - QtSql4.dll file - qtWiki.exe fldr - sqldrivers file - qsqlite4.dll Название: Re: Стат. линковка приожения где юзается плагин... или альт. вариант деплоймента Отправлено: Deaf_Dumb_Blind от Ноябрь 01, 2008, 20:39 BW, попробовал положить папку sqlplugins прямиков в папку с myApp.exe - все заработало!
Всем огромное спасибо за помощь! |