Как вызвать из плагина функцию приложения? |
Здравствуйте, гость ( Вход | Регистрация )
Как вызвать из плагина функцию приложения? |
mva |
17.9.2010, 22:03
Сообщение
#1
|
Участник Группа: Участник Сообщений: 104 Регистрация: 15.3.2009 Из: Киров Пользователь №: 615 Спасибо сказали: 3 раз(а) Репутация: 0 |
Добрый день!
Никак не могу найти в документации описание того, как правильно из плагина вызывать метод класса основного приложения. У меня выдается сообщение об ошибке "...: symbol lookup error: ... : undefined symbol: ... ". Может кто подскажет как это делается или где искать? |
|
|
igor_bogomolov |
21.9.2010, 11:26
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Написал тестовый пример имитирующий проблему (переделанный стандартный пример из поставки Qt). Сам пример, конечно, не самый элегантный, но все проблемы и возможные способы решения он показывает.
Сам пример в приложении. Предлагаю его в том виде, когда он даст ошибку на этапе исполнения, как раз то о чем говорит mva Я расширил стандартный пример неким классом SharedUtils который находится в файле shared_utils.* Этот код компилируется вместе с приложением. А теперь возникает ситуация, что этот функционал, который предоставляет SharedUtils, необходим не только приложению, но и плагину. Тот код, который я приложил, удачно скомпилируется (и приложение даже запустится), но при нажатии на кнопку произойдет ошибка, и в общем понятно почему. Я ранее еще предложил три пути решения этой проблемы 1. Включить shared_utils.* в компиляцию плагина. Модифицируем plugin pro И, ву а ля, все работает. Но это не хорошо. Т.о. мы просто продублировали функционал. Если у нас появятся статические данные, будут проблемы, т.к. статическая переменная в приложении и в плагине - это две совершенно разные переменные. 2. Выделить общий код в разделяемую библиотеку (.dll/.so). (У меня в проекте сделано именно так) 3. GCC visibility. Добавляем в файл проекта приложения следущую строку
И помечаем класс следующим образом Всё, этого вполне достаточно.
Прикрепленные файлы
|
|
|
Текстовая версия | Сейчас: 20.12.2024, 13:05 |