crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> использование сторонних классов в плагинах, о-ло-ло
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)...до этого пробовал собирать компонент в отдельную библиотеку - результат тот же.

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

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

int *Stop = new int[M];

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

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

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

катит!

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

не катит!

то есть....что всё это значит?) я примерно понимаю, сформулировать не могу пока.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 13.7.2015, 15:49
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Как то загадочно звучит :lol:
Есть минимальный проект который демонстрирует такое поведение?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Я еще тут :lol: у меня пока нет компа с 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. но это так, моё предположение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 12:26