[Qt Plugins] Не подгружается плагин, прошу помощи., [closed] |
Здравствуйте, гость ( Вход | Регистрация )
[Qt Plugins] Не подгружается плагин, прошу помощи., [closed] |
flareguner |
8.10.2010, 10:00
Сообщение
#1
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго времени суток. Сразу замечу, что это репост моей темыс ЛОРа, надеюсь тут помогут оперативнее.
Уже не знаю где искать, помогите пожалуйста. Делал всё как в примере Echo Plugin. Подгружается плагин вот здесь. В errorString плюет что-то подобное:
Вот что говорит ldd
Версия Qt:
Ссылка на сам плагин. Насчет qt4_wrap_cpp: не помогает, пробовал. Для сборки использую CMake, его конфиг можно узреть по ссылке на сорцы. Подсматривал в другом проекте, там всё точно так же реализованно. Помогите пожалуйста. Уже разобрался, тема закрыта. Сообщение отредактировал flareguner - 8.10.2010, 10:48 |
|
|
Алексей1153 |
2.1.2011, 18:40
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Пытаюсь создать плагин, помогите кашу в голове в порядок привести ))
в общем, делал всё по инструкции из книги Блашнет. В дезайнере появился виджет, кладётся на форму, вид такой, как описан в классе в setStyleSheet только когда начинаю компилировать проект, где используется плагин, оказывается, что в ui_*.h вставлен инклуд #include "MyPlaginName.h" путь к которому, естественно, не надодится, так как файл лежит в проекте плагина. Мне вручную нужно это файл куда-то скопировать ? То есть - в проект, использующий плагин ? |
|
|
igor_bogomolov |
2.1.2011, 21:30
Сообщение
#3
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
То есть - в проект, использующий плагин ? Если я все правильно понял, ты сделал плагин для QtDesigner, поэтому единственный проект, который может твой плагин использовать, это опять же таки QtDesigner. Это нужно только для удобства разработки. Если ты хочешь использовать этот виджет в своем проекте, ты должен добавить его в проект. Как ты уже это сделаешь, решать тебе. Я бы создал .pri файл для подключения его в проект. |
|
|
Алексей1153 |
3.1.2011, 14:02
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Понятно. А как такой файл сделать ? Поиск по сайту ничего не выдал
|
|
|
igor_bogomolov |
3.1.2011, 19:32
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Алексей1153, отдельного описания наверное нет, он имеет тот же синтаксис, что и файл проекта (.pro)
Просто с .pri файл часто выносят какие то общие настройки, а подключается он в .pro файле директивой include. В твоём случае, на мой взгляд, было бы удобно сделать .pri файл для подключения твоего виджета в любой проект Содержание примерно следущее
|
|
|
Litkevich Yuriy |
3.1.2011, 20:41
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Алексей1153 |
3.1.2011, 20:57
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
спасибо за пинки в нужном направлении, но у меня попутно ещё вопросы:
значит, с точки зрения пользователя (программиста) виджета, должно происходить следующее (это мои догадки, их надо исправить в нужную сторону ) 1) он получает в распоряжение модуль - в каком виде? Хедер+реализация+pro? 2) он компилирует pro'ект плагина, у него появляется *.dll и *.a (в винде. А не в винде?) в папке дизайнера + ему надо ещё закинуть исходники в проект, использующий этот виджет так ? Сообщение отредактировал Алексей1153 - 3.1.2011, 20:58 |
|
|
Litkevich Yuriy |
3.1.2011, 21:58
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Обычно картина выглядит так:
Разработал виджет Затем решил его использовать во многих своих приложениях - сделал каталог с исходниками и для удобства туда pri-файл. Затем решил, что не дурно бы этот виджет использовать в дизайнере - сделал обёртку к нему по правилам плагинов дизайнера. Теперь этот виджет, не изменяя его, можно не только в коде использовать, но и в дизайнере. Прочитай эту статейку |
|
|
Алексей1153 |
8.1.2011, 16:42
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
забыл отписаться о результатах вскрытия
в общем, схема вышла следующая: имеется плагин X исходники плагина положены в папку X, эту папку нужно скопировать в папку проекта, который будет ипользовать плагин в папке плагина также лежит X.pri, в котором перечислены все инклуды в таком виде: HEADERS+=./X/X.h SOURCSE+=./X/X.cpp в pro проекта (и в pro плагина тоже - для его сборки для дизайнера) нужно дописать INCLUDEPATH+=X include(X/X.pri) собираем pro плагина. Дизайнер начинает понимать виджет собираем проект-приёмник. Запускаем - всё нормально и эту схему никак по другому не удаётся переделать - так и должно быть ? ещё вопрос - как разрешать конфликты имён папок разных плагинов? Только уникальными названиями ? Сообщение отредактировал Алексей1153 - 8.1.2011, 18:21 |
|
|
Litkevich Yuriy |
8.1.2011, 17:56
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
эту папку нужно скопировать в папку проекта нет не нужно, можно для плагинов отдельное место придумать, но тогда pri-файл должен выглядеть так:HEADERS+=$$PWD/X/X.h SOURCSE+=$$PWD/X/X.cpp Переменная qmake $$PWD означает текущий каталог этого файла (т.е. данного pri-файла) как разрешать конфликты имён папок разных плагинов? Только уникальными названиями ? с qmake главная проблема - одинаковые имена файлов, например, есть такие файлыpath/name.h path/name.cpp path/groupA/name.h path/groupA/name.cpp при компиляции получишь головняк. Т.к. qmake создаёт каталог для хранения объектников (например, debug) и там всё в одну кучу. А компилятор при компиляции cpp-файла создаёт одноимённый o-файл, т.е. получаем: path/name.cpp => path/debug/name.o path/groupA/name.cpp => path/debug/name.o (при компиляции следующего name.cpp, предыдущий name.o будет перезаписан) |
|
|
Текстовая версия | Сейчас: 21.12.2024, 19:36 |