Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Доступ к основному окну из плагина

Автор: exmagistr 30.6.2009, 12:45

Всем доброго времени суток!
Хочу написать приложение, расширяемое плагинами, в том числе дать доступ плагинам к элементам интерфейса основного окна, например к элементам ввода, меню и т.п. Во время выполнения, в момент вызова метода плагина, программа валится с ошибкой.
Для тестового примера:
Метод плагина:

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

Автор: SABROG 30.6.2009, 13:40

Тут похоже есть какая-то зависимость методов классов с vtable, т.к. при доступе к публичным переменным класса MainWindow плагин компилится нормально.

Автор: BRE 30.6.2009, 14:08

Добавь в файл проекта самой программы:
QMAKE_LFLAGS += -Wl,-export-dynamic

Автор: SABROG 30.6.2009, 14:16

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

    virtual QLineEdit* getEditor();

Автор: exmagistr 30.6.2009, 14:39

Спасибо за быстрое наставление на путь истинный :)
P.S.: для информации - этот вопрос также обсуждается
http://www.prog.org.ru/topic_9914_0.html

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)