Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: использование сторонних классов в плагинах
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
call_me_Frank
Привет, всем.

Мучаю плагины, а они меня.
Внутри плагина к основному приложению мне нужно создать виджет, который занимается отображением графиков. Проблема в том, что иногда стоит просто включить в проект файлы каких-то внешних классов [HarrixQtLibraryForQWebView] и плагин перестает загружаться - loader.instance() == nullptr; Иногда такая тема возникает, как только я пытаюсь создать объект подключенного класса внутри плагина [QCustomPlot].

Собственно, для рисования графиков использую элементы с этой странички - http://blog.harrix.org/?p=1837

Отдельные проекты работают и с одним элементом, и с другим. Может кто-то шарит в теме плагинов и расскажет, как правильно реализовать размещение этих классов в плагинах?
lanz
Сходу бы посмотрел не тянет ли плагин в зависимостях некие DLLки, которые не могут загрузится по какойто причине (например не находятся)
call_me_Frank
не, не. никаких сторонних либ )

сейчас подключаю исходные файлы (*.h, *.cpp)...до этого пробовал собирать компонент в отдельную библиотеку - результат тот же.

вот, что я наблюдаю:

стоит исключить эту строчку из кода плагина - и все работает.

int *Stop = new int[M];

стоит её включить - плагин не загружается.

при этом, в качестве теста:

const int M = 7;
int *Stop = new int[M];

катит!

int M = 7;
int *Stop = new int[M];

не катит!

то есть....что всё это значит?) я примерно понимаю, сформулировать не могу пока.
lanz
Как то загадочно звучит :lol:
Есть минимальный проект который демонстрирует такое поведение?
call_me_Frank
ща попробую смастерить )
call_me_Frank
вот пример. [Qt 4.8.6; mingw]
test_plugin.zip
call_me_Frank
если проблемы со скачкой - сообщайте ) залью куда-нибудь еще
call_me_Frank
ну...кажется, все разошлись.

в общем, мне удалось решить проблему, используя QVector вместо вышепредставленного int[N] и запустить HarrixQtLibraryForQWebView в качестве плагина.

а по сути, многое так и осталось не ясным )
lanz
Я еще тут :lol: у меня пока нет компа с Qt4, а в Qt5 другая система.
Как доберусь, попробую покопаться.
Iron Bug
я ни разу не спец в 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. но это так, моё предположение.
Litkevich Yuriy
call_me_Frank, Я с неожиданными глюками сталкивался в разных версиях MinGW (которым Qt собрана), так например я полностью Qt 4.7.х
Пользую 4.8.6, как у тебя, вроде глюков не замечал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.