Динамические библиотеки QT |
Здравствуйте, гость ( Вход | Регистрация )
Динамические библиотеки QT |
theravel |
24.1.2010, 15:24
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 24.1.2010 Пользователь №: 1400 Спасибо сказали: 0 раз(а) Репутация: 0 |
День добрый,
сразу прошу простить за весьма ламерский вопрос, на QT пробую кодить второй день, и все два дня посвятил созданию простого примера с динамическими библиотеками. Пытаюсь повторить этот пример, но он то не компилируется, то загрузка плагина не происходит Вообщем мой вопрос в том, почему так, что неправильно, и еще я буду безумно благодарен, если кто-то выложит не отдельно файлики проекта, а весь проект с любым плагином целиком Собираю в Qt Creator 1.3.0 (Qt 4.6.0) (32-х битной) Windows7 Мой проект выглядит как-то так: файл plugin/interface.h
Кусок файла plugin/mainwindow.cpp
Файл plugin/plugin.pro
Файл plugin/dynamic2/dynamic2.h
Файл plugin/dynamic2/dynamic2.cpp
Файл plugin/dynamic2/dynamic2.pro
При этом проект dynamic2 не компилируется с ошибкой
Но, если в dynamic.pro выставить CONFIG += release, то dll компилируется Но, даже если проект plugin собрать в режиме релиза, и положить получившуюся dll в нужную папку (пути верны, я проверял), то все равно приложение при запуске покажет сообщение "no" - плагин не загружен Весь проект лежит здесь Еще раз скажу, что буду безумно благодарен скомпонованному проекту с любым плагином. С уважением, Дмитрий |
|
|
BRE |
24.1.2010, 15:56
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
У QPluginLoader есть метод:
QString QPluginLoader::errorString () const Собирай и плагин и программу в чем то одном, или debug или release. В pro файлы проектов добавь: CONFIG += release Сделай в обоих проектах make distclean qmake make и все заработает. Еще я бы добавил:
|
|
|
theravel |
24.1.2010, 17:00
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 24.1.2010 Пользователь №: 1400 Спасибо сказали: 0 раз(а) Репутация: 0 |
Так, если по порядку,
Добавил это
теперь библиотека компилируется без ошибок, отлично =) Цитата В pro файлы проектов добавь: CONFIG += release Сделай в обоих проектах make distclean qmake make сделал, но при запуске приложения библиотека не загружается, а QPluginLoader::errorString() выдает "unknown error" |
|
|
ViGOur |
24.1.2010, 17:34
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Для вывода отладочной информации плагинов можно использовать QT_DEBUG_PLUGINS=1.
Тебе нужно установить этот параметр в настройках Qt Creator'a, правда не знаю где, так как нет его под рукой... |
|
|
BRE |
24.1.2010, 17:59
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
сделал, но при запуске приложения библиотека не загружается, а QPluginLoader::errorString() выдает "unknown error" Ну значит все нормально:
Сообщение отредактировал BRE - 24.1.2010, 18:04 |
|
|
theravel |
24.1.2010, 22:28
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 24.1.2010 Пользователь №: 1400 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
theravel |
25.1.2010, 22:02
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 24.1.2010 Пользователь №: 1400 Спасибо сказали: 0 раз(а) Репутация: 0 |
Тогда еще один вопрос, просто из любопыства,
что значит этот ноль? где можно почитать про такие конструкции? |
|
|
BRE |
25.1.2010, 22:22
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Litkevich Yuriy |
26.1.2010, 7:05
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
что значит этот ноль? Определение чисто виртуальной функции (pure virtual). Добавлю:класс который содержит истинно-виртуальную функцию обычно называют - абстрактным, т.к. нельзя создать экземпляр такого класса (истинно-виртуальная функция не имеет реализации). Абстрактные классы предназначены только для наследования. |
|
|
Текстовая версия | Сейчас: 14.1.2025, 21:04 |