![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
novichkov |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Подскажите, пожалуйста, как правильно разрешить такую проблему: есть Qt плагин, который использует некоторые классы, определенные в папке с исходным кодом основной программы. Чтобы нормально слинковать плагин, мне пришлось включить файлы cpp этих классов в файл pro плагина, что фактически означает дублирование кода и разбухание размена плагина. Можно ли как-нибудь использовать основной исполняемый файл как библиотеку, или обязательно нужно выносить общие классы в отдельную разделяемую библиотеку?
|
|
|
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
не очень понятно, зачем включать cpp, если требуются только классы. все библиотеки (и плагины, как их разновидность) имеют открытые входы для линковки в процессе загрузки. это не вызывает проблем с их компиляцией.
|
|
|
novichkov |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Вот файл проекта одного из плагинов:
Может, я тупой, но я не понимаю, как заменить
на что-то вроде
|
|
|
Iron Bug |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
я не юзаю 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 |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
novichkov, я честно говоря не понял, что ты пытаешься сделать.
Ты хочешь в одном плагине использовать другой плагин? |
|
|
novichkov |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Я хочу в программе и в плагине к ней использовать один класс наименее затратным способом. Одно из решений - выделить этот класс в отдельную библиотеку и линковать к ней и программу, и плагин. Есть ли другие решения?
|
|
|
sidsukana |
![]()
Сообщение
#7
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день!
Бьюсь с проблемой, не могу понять что не правильно. Хочу сделать плагин, который загружается в основную программу статически Сделал все по статьям 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 |
![]()
Сообщение
#8
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Проблема решена. Причина была в неправильном имени плагина в макросе импорта.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 15:47 |