Линковка своего Qt плагина с основной программой |
Здравствуйте, гость ( Вход | Регистрация )
Линковка своего Qt плагина с основной программой |
novichkov |
30.11.2012, 8:51
Сообщение
#1
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Подскажите, пожалуйста, как правильно разрешить такую проблему: есть Qt плагин, который использует некоторые классы, определенные в папке с исходным кодом основной программы. Чтобы нормально слинковать плагин, мне пришлось включить файлы cpp этих классов в файл pro плагина, что фактически означает дублирование кода и разбухание размена плагина. Можно ли как-нибудь использовать основной исполняемый файл как библиотеку, или обязательно нужно выносить общие классы в отдельную разделяемую библиотеку?
|
|
|
Iron Bug |
30.11.2012, 10:10
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
не очень понятно, зачем включать cpp, если требуются только классы. все библиотеки (и плагины, как их разновидность) имеют открытые входы для линковки в процессе загрузки. это не вызывает проблем с их компиляцией.
|
|
|
novichkov |
30.11.2012, 10:53
Сообщение
#3
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Вот файл проекта одного из плагинов:
Может, я тупой, но я не понимаю, как заменить
на что-то вроде
|
|
|
Iron Bug |
30.11.2012, 17:59
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
я не юзаю Qt, но беглый поиск в гугле выдал банальный макрос для импорта-экспорта (аналог которого без Qt просто пишут руками)
Цитата #ifndef CORE_LIBRARY #define APP_CORE_EXPORTS Q_DECL_IMPORT #else #define APP_CORE_EXPORTS Q_DECL_EXPORT #endif соответственно, при классах должен стоять модификатор APP_CORE_EXPORTS, а при библиотеке - глобальный макрос CORE_LIBRARY. как-то так должно быть. |
|
|
Litkevich Yuriy |
30.11.2012, 19:56
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
novichkov, я честно говоря не понял, что ты пытаешься сделать.
Ты хочешь в одном плагине использовать другой плагин? |
|
|
novichkov |
1.12.2012, 15:00
Сообщение
#6
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
Я хочу в программе и в плагине к ней использовать один класс наименее затратным способом. Одно из решений - выделить этот класс в отдельную библиотеку и линковать к ней и программу, и плагин. Есть ли другие решения?
|
|
|
sidsukana |
13.5.2014, 9:07
Сообщение
#7
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
Добрый день!
Бьюсь с проблемой, не могу понять что не правильно. Хочу сделать плагин, который загружается в основную программу статически Сделал все по статьям http://qt-project.org/doc/qt-5/plugins-howto.html и http://qt-project.org/doc/qt-5/qtwidgets-t...ting-the-plugin Получаю ошибку при компиляции основной программы (проекта) Цитата debug/main.o: In function `ZN23StaticmpqPluginInstanceC1Ev': C:\Sources\qsw\build/../qsw/main.cpp:6: undefined reference to `qt_static_plugin_mpq()' Windows 7 x64, Qt 5.2.1 MinGW 32-bit. QtCreator 3.1 |
|
|
sidsukana |
13.5.2014, 12:31
Сообщение
#8
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
Проблема решена. Причина была в неправильном имени плагина в макросе импорта.
|
|
|
Текстовая версия | Сейчас: 22.11.2024, 0:28 |