использование сторонних классов в плагинах, о-ло-ло |
Здравствуйте, гость ( Вход | Регистрация )
использование сторонних классов в плагинах, о-ло-ло |
call_me_Frank |
13.7.2015, 12:49
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет, всем.
Мучаю плагины, а они меня. Внутри плагина к основному приложению мне нужно создать виджет, который занимается отображением графиков. Проблема в том, что иногда стоит просто включить в проект файлы каких-то внешних классов [HarrixQtLibraryForQWebView] и плагин перестает загружаться - loader.instance() == nullptr; Иногда такая тема возникает, как только я пытаюсь создать объект подключенного класса внутри плагина [QCustomPlot]. Собственно, для рисования графиков использую элементы с этой странички - http://blog.harrix.org/?p=1837 Отдельные проекты работают и с одним элементом, и с другим. Может кто-то шарит в теме плагинов и расскажет, как правильно реализовать размещение этих классов в плагинах? |
|
|
lanz |
13.7.2015, 14:52
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Сходу бы посмотрел не тянет ли плагин в зависимостях некие DLLки, которые не могут загрузится по какойто причине (например не находятся)
|
|
|
call_me_Frank |
13.7.2015, 15:39
Сообщение
#3
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
не, не. никаких сторонних либ )
сейчас подключаю исходные файлы (*.h, *.cpp)...до этого пробовал собирать компонент в отдельную библиотеку - результат тот же. вот, что я наблюдаю: стоит исключить эту строчку из кода плагина - и все работает.
стоит её включить - плагин не загружается. при этом, в качестве теста:
катит!
не катит! то есть....что всё это значит?) я примерно понимаю, сформулировать не могу пока. |
|
|
lanz |
13.7.2015, 15:49
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Как то загадочно звучит
Есть минимальный проект который демонстрирует такое поведение? |
|
|
call_me_Frank |
13.7.2015, 15:56
Сообщение
#5
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
ща попробую смастерить )
|
|
|
call_me_Frank |
13.7.2015, 16:36
Сообщение
#6
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
вот пример. [Qt 4.8.6; mingw]
test_plugin.zip |
|
|
call_me_Frank |
13.7.2015, 17:11
Сообщение
#7
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
если проблемы со скачкой - сообщайте ) залью куда-нибудь еще
|
|
|
call_me_Frank |
15.7.2015, 15:30
Сообщение
#8
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
ну...кажется, все разошлись.
в общем, мне удалось решить проблему, используя QVector вместо вышепредставленного int[N] и запустить HarrixQtLibraryForQWebView в качестве плагина. а по сути, многое так и осталось не ясным ) |
|
|
lanz |
15.7.2015, 16:34
Сообщение
#9
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Я еще тут у меня пока нет компа с Qt4, а в Qt5 другая система.
Как доберусь, попробую покопаться. |
|
|
Iron Bug |
15.7.2015, 20:03
Сообщение
#10
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
я ни разу не спец в Qt, ошибок с точки зрения С++ вроде нет. но пока я смотрела код, я прочитала про макрос Q_INTERFACES здесь и нашла вот это:
Цитата One of the caveats to be aware of is that moc is not aware of interface inheritance. For example, if ToolInterface derived from GenericInterface, it should be possible to qt_metacast to GenericInterface. moc is no C++ parser and hence it would not add GenericInterface to the qt_metacast code that it generated above. A workaround is to write Q_INTERFACES(ToolInterface:GenericInterface) in hammer.h. The ":" indicates derives. возможно, что проблема в наследовании и надо ещё что-то передавать в Q_INTERFACES. но это так, моё предположение. |
|
|
Текстовая версия | Сейчас: 18.4.2024, 12:26 |