crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Доступ к основному окну из плагина
exmagistr
  опции профиля:
сообщение 30.6.2009, 12:45
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 30.6.2009
Пользователь №: 867

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




Репутация:   0  


Всем доброго времени суток!
Хочу написать приложение, расширяемое плагинами, в том числе дать доступ плагинам к элементам интерфейса основного окна, например к элементам ввода, меню и т.п. Во время выполнения, в момент вызова метода плагина, программа валится с ошибкой.
Для тестового примера:
Метод плагина:
void Plugin::writeString(MainWindow* win)
{
    win->getEditor()->setText("Hello!");
}

где win->getEditor() возвращает указатель на элемент QLineEdit основного окна MainWindow. Текст ошибки:
symbol lookup error: /home/proffa/qt/testplugin/bin/plugin/libplugin.so: undefined symbol: _ZN10MainWindow9getEditorEv

Кто нибудь может подсказать, что не так сделано, и возможно ли вообще реализовать подобную идею? Может как-нидь по другому, не через плагины? Заранее спасибо.
P.S.: работаю под Ubuntu 9.04, Qt 4.5.1, исходники тестового примера прилагаются

Цитата(exmagistr @ 30.6.2009, 13:41) *
исходники тестового примера прилагаются

не прилагаются :(
выложил здесь: http://narod.ru/disk/10435014000/testplugin.zip.html
Причина редактирования: используй тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 30.6.2009, 13:40
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Тут похоже есть какая-то зависимость методов классов с vtable, т.к. при доступе к публичным переменным класса MainWindow плагин компилится нормально.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 30.6.2009, 14:08
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Добавь в файл проекта самой программы:
QMAKE_LFLAGS += -Wl,-export-dynamic
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 30.6.2009, 14:16
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Вот так объяви метод и всё будет работать:

    virtual QLineEdit* getEditor();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
exmagistr
  опции профиля:
сообщение 30.6.2009, 14:39
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 30.6.2009
Пользователь №: 867

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




Репутация:   0  


Спасибо за быстрое наставление на путь истинный :)
P.S.: для информации - этот вопрос также обсуждается
здесь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.3.2024, 13:29