![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#1
|
Гости ![]() |
Проблема в следующем, ни как не могу слинковать код. В qtcreator есть библиотека libDuiEditor. Я ее подключаю к своему проекту. Код компилируется, но линковщик в упор не хочет видеть этот модуль.
Может я чего-то не понимаю ?
Вот код самого модуля
|
|
|
SABROG |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Покажи .pro файл.
|
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#3
|
Гости ![]() |
|
|
|
frg10 |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Может я чего-то не понимаю ? DuiEditor::Internal::DuiEditorPlugin *plugin =new DuiEditor::Internal::DuiEditorPlugin(); Вроде инстансы плагинов не создаются вручную. Нужно использовать QPluginLoader. Вобщем смотри ассистант. Еще можно попробовать добавить к описанию класса Q_DECL_EXPORT/IMPORT чтобы сделать его интерфейс видимым снаружи. Но при этом нужно будет пересобрать либу. |
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#5
|
Гости ![]() |
Может я чего-то не понимаю ? DuiEditor::Internal::DuiEditorPlugin *plugin =new DuiEditor::Internal::DuiEditorPlugin(); Вроде инстансы плагинов не создаются вручную. Нужно использовать QPluginLoader. Вобщем смотри ассистант. Еще можно попробовать добавить к описанию класса Q_DECL_EXPORT/IMPORT чтобы сделать его интерфейс видимым снаружи. Но при этом нужно будет пересобрать либу. Да руками не создаются, делаю так
Получаем ошибку линковки
|
|
|
frg10 |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
ИМХО без правки исходников не обойтись. Дело в том, что если вы хотите использовать какой-то класс определенный в динамической библиотеке, этот класс должен из нее экспортироваться. Т.е. класс должен быть объявлен так:
Подробности в Creating Shared Libraries Ну и пересобрать нужно будет этот плагин. И линковать нужно будет статически через -lDuiEditor. А вообще, зачем вам доступ к классу DuiEditorPlugin? Если вам нужно его инициализировать, то нужно кастить его к ExtensionSystem::IPlugin. А доступ ко всем объектам, которые он предоставляет, осуществляется через ExtensionSystem::PluginManger. |
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#7
|
Гости ![]() |
ИМХО без правки исходников не обойтись. Дело в том, что если вы хотите использовать какой-то класс определенный в динамической библиотеке, этот класс должен из нее экспортироваться. Т.е. класс должен быть объявлен так:
Подробности в Creating Shared Libraries Ну и пересобрать нужно будет этот плагин. И линковать нужно будет статически через -lDuiEditor. А вообще, зачем вам доступ к классу DuiEditorPlugin? Если вам нужно его инициализировать, то нужно кастить его к ExtensionSystem::IPlugin. А доступ ко всем объектам, которые он предоставляет, осуществляется через ExtensionSystem::PluginManger. Может сам класс мне и не нужен, главное получить его функционал,если подскажите как им воспользоваться буду благодарен. |
|
|
frg10 |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Может сам класс мне и не нужен, главное получить его функционал,если подскажите как им воспользоваться буду благодарен. Я могу вам посоветовать подробнее разобраться с архитектурой QtCreator. Мне очень помог документ Writing Qt Creator Plugin. Как понятно из названия, там описывается как писать собственные плагины, ну и параллельно разбирается архитектура. А дальше нужно просто брать исходники самого креатора и разбираться. ![]() P.S. Еще могу посоветовать сгенерировать документацию по QtCreator Doxygen-ом. Очень помогает. ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
heiheshang, что-то я в Git-хранилище этого DuiEditor не вижу. Может прибили уже?
|
|
|
Гость_Гость_heiheshang_*_* |
![]()
Сообщение
#10
|
Гости ![]() |
Может сам класс мне и не нужен, главное получить его функционал,если подскажите как им воспользоваться буду благодарен. Я могу вам посоветовать подробнее разобраться с архитектурой QtCreator. Мне очень помог документ Writing Qt Creator Plugin. Как понятно из названия, там описывается как писать собственные плагины, ну и параллельно разбирается архитектура. А дальше нужно просто брать исходники самого креатора и разбираться. ![]() P.S. Еще могу посоветовать сгенерировать документацию по QtCreator Doxygen-ом. Очень помогает. ![]() Просмотр ничего не дал, так и осталось неясным как методы вызывать плагина. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.6.2025, 15:06 |