Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: Sheridan от Январь 11, 2007, 01:24 Перекопал ассистанта, но так ничего и не понял...
Как написать и динамически подключить библиотеку на кутэ? Тоесть и основной модуль на кутэ, и библиотека на кутэ. Чтобы это работало кроссплатформенно... Лучшим объяснением был бы пример экспорта функции из библиотеки и импорта этой функции в основном модуле. кутэ 4я Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: Dendy от Январь 11, 2007, 05:34 Если динамически загружаемая библиотека использует шаровую Qt - она должна бьІть проверена на совместимость с основньІм модулем. Для етого предусмотрена система плагинов. Достаточно подробньІе обьяснения в Ассистанте (Plugin System, QPluginLoader) и примерах: exmaples/tools/plugandpaint.
Если линковать статически - пользоваться стандартньІми средствами: заголовочники от либьІ + .la (.lib) + .so (.dll). Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: Sheridan от Январь 11, 2007, 18:02 Цитата: "Dendy" Если динамически загружаемая библиотека использует шаровую Qt - она должна бьІть проверена на совместимость с основньІм модулем. Для етого предусмотрена система плагинов. Достаточно подробньІе обьяснения в Ассистанте (Plugin System, QPluginLoader) и примерах: exmaples/tools/plugandpaint. Смотрел я туда - честно говоря ничего не понял... Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: BaltikS от Январь 11, 2007, 20:05 Цитировать Смотрел я туда - честно говоря ничего не понял... Ну друг, читай книги, лазий по интернету, познавай мир... добавлено спустя 2 минуты: Кстати в ассистенте то про это есть целая глава How to Create Qt Plugins. А также книгу по QT4 Бланшета, глава - Making Applictions Plugin-Aware добавлено спустя 3 минуты: Если тебе необходимо статически слинковать DLL, то тебе сюда http://prog.org.ru/forum/topic_3698_0.html Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: Sheridan от Январь 11, 2007, 23:03 Цитата: "BaltikS" Ну друг, читай книги, лазий по интернету, познавай мир... Пытаюсь... Цитата: "BaltikS" Кстати в ассистенте то про это есть целая глава How to Create Qt Plugins. А также книгу по QT4 Бланшета, глава - Making Applictions Plugin-Aware А где там про экспорт и импорт функций? Цитата: "BaltikS" Если тебе необходимо статически слинковать DLL, то тебе сюда http://prog.org.ru/forum/topic_3698_0.html Да не нужна мне статика. Мне динамика нужна. Кода кусочек, в несколько строчек показать можеш? Экспорт и импорт функции. Дальше я уже сам. Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: Dendy от Январь 11, 2007, 23:38 Експорт и импорт функции ничем не будет отличаться от експорта и импорта класса интерфейса. Ибо всё равно нужна достоверность версии загружаемой лна лету DLL. Для проверки версии используется система плагинов.
Что нужно: 1. Интерфейс, через которьІй дёргаем функционал библиотеки. Может бьІть несколько на один плагин. Код: class MyInterface 2. Реализация интерфейса (сам плагин). Ето класс, наследуется от QObject и интерфейса/интерфейсов. Может бьІть ровно один в плагине. Код: // myplugin.h Код: //myplugin.cpp 3. Загружаем плагин из основной программьІ: Код: QPluginLoader loader( "myplugin.dll" ); Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: fanat9 от Январь 12, 2007, 01:01 Вот пример.
deconvolution.pro Код:
deconvolution.cpp Код:
deconvolution.h Код:
В программе: Код:
Название: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: Sheridan от Январь 12, 2007, 01:56 Ребята, спасибо огромное!! Теперь все стало на свои места. Спасибо!
Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: iRQSX от Февраль 09, 2010, 00:43 Дабы не плодить темы напишу тут. Вобщем тоже делаю плагин но QPluginLoader упорствует, не загружает библиотеку!
Код
Код
Код
Вобщем после QObject *obj = loader.instance(); в obj нет ареса, все по нулям! На всякий случай прикрепил исходник. Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: panAlexey от Февраль 09, 2010, 00:59 Дабы не плодить темы напишу тут. Вобщем тоже делаю плагин но QPluginLoader упорствует, не загружает библиотеку! На всякий случай - библиотека и приложение должны быть собраны одним компилятором.Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: iRQSX от Февраль 09, 2010, 01:03 Поясню... Делаю в QT Creator под виндой в одним проекте. Комилится все разом, о разных компиляторах речи не может быть!
Не зря же исходники прицепил ;) Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: crackedmind от Февраль 09, 2010, 04:56 1. loader->errorString() что дает?
2. А где же Q_EXPORT_PLUGIN2 ??? Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: iRQSX от Февраль 09, 2010, 13:46 Q_EXPORT_PLUGIN2 вроде используется для плагинов к самому QT(типа поддержки разных БД или форматов графики, или написание компонентов для QTDesigner) Поправте если ошибаюсь... И помню что такое уже делал и Q_EXPORT_PLUGIN2 точно не использовал. Программа выглядела вроде в точности как эта и работала!
loader->errorString() "The file 'H:/QProject/bin/plugins/DBEngine.dll' is not a valid Qt plugin." В принципе как я и предпологал... Но почему? Кстати такой код Код
не компилится Код: debug/moc_dbengine.o: In function `qt_plugin_query_verification_data': Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: break от Февраль 10, 2010, 02:06 Цитировать Q_EXPORT_PLUGIN2 вроде используется для плагинов к самому QT Ошибаетесь для любого плагина надовсе же автору стоит воспользоваться советом и вывести loader.errorString(); все четко будет написано почему не грузится! Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: iRQSX от Февраль 10, 2010, 08:26 loader->errorString() "The file 'H:/QProject/bin/plugins/DBEngine.dll' is not a valid Qt plugin." В принципе как я и предпологал... Все разобрался... Дело действительно было в Q_EXPORT_PLUGIN2 :) Просто не там прописывал. Спасибо что навели! Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: BRE от Февраль 10, 2010, 08:35 А ты Q_EXPORT_PLUGIN2(dbengine, DBEngine) не в .h файле напиши, а в .cpp
Название: Re: Подскажите как написать/подключить библиотеку (dll, so...) Отправлено: iRQSX от Февраль 10, 2010, 08:37 Еще раз спасибо за подсказки! Посмотрел внимательно Plug&Paint и там увидил что в cpp надо прописывать.
|