Russian Qt Forum
Май 18, 2012, 20:33
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
(Модератор:
Sergeich
) >
Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc (Прочитано 3628 раз)
wyvern
Гость
Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
:
Декабрь 18, 2008, 12:09 »
привет!
1) собрал qt 4.4.3 статически
2) собрал согласно Assistant статический плагин qsqlodbc. он появился в папке C:\Qt\4.4.3\plugins\sqldrivers (qsqlodbc.lib)
3) далее согласно Assistant подключил его к проекту
в main.cpp добавил
#include <QtPlugin>
QT_BEGIN_NAMESPACE
Q_IMPORT_PLUGIN(qsqlodbc)
QT_END_NAMESPACE
добавил в файл pro:
QTPLUGIN += qsqlodbc
в результате при линке в Visual Studio 2005 вылетает ошибка:
error LNK2019: unresolved external symbol "class QObject * __cdecl qt_plugin_instance_qsqlodbc(void)" (?qt_plugin_instance_qsqlodbc@@YAPAVQObject@@XZ) referenced in function "public: __thiscall StaticqsqlodbcPluginInstance::StaticqsqlodbcPluginInstance(void)" (??0StaticqsqlodbcPluginInstance@@QAE@XZ) main.obj
причем сборка из ком. строки, кажется, удается. но и в этом случае при подключении к базе данных возникает ошибка, как-будто драйвер БД не подключен. возможно, эта ошибка возникает из-за способа обращения?
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QODBC", "MAIN");
Записан
inri13666
Гость
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #1 :
Декабрь 21, 2008, 00:27 »
ПРоблема в том что плагины могут быть скомпилены тока в шаред версии
link
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3304
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #2 :
Декабрь 21, 2008, 01:36 »
2 inri13666, что-то по ссылке я такого утверждения не увидел. Можешь уточнить?
Записан
Юра.
inri13666
Гость
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #3 :
Декабрь 21, 2008, 05:43 »
Цитировать
Решение проблем
Вы должны всегда использовать библиотеки клиента, которые были собраны тем же компилятором, который вы используете для своего проекта. Если вы не можете получить описание источника сборки библиотеки клиента самостоятельно, попробуйте удостовериться, что предсобранная библиотека совместима с вашим компилятором, иначе вы получите множество ошибок "undefined symbols". Некоторые компиляторы имеют инструменты для преобразования библиотек, например, Borland предоставляет инструмент COFF2OMF.EXE для преобразования библиотек, которые были собраны в Microsoft Visual C++.
Если компиляция плагина прошла успешно, но он не может быть загружен, убедитесь в том, что следующие требования выполнены:
Убедитесь, что вы используете Qt библиотеку динамически; вы не может использовать плагины в статической сборке.
Убедитесь, что плагин в правильной директории. Можно использовать QApplication::libraryPaths(), чтобы определить, где Qt ищет плагины.
Убедитесь, что клиентские библиотеки СУБД доступны. Под Unix, выполните команду ldd и введите имя плагина в качестве параметра, например: ldd libqsqlmysql.so. Вы получите предупреждение, если какая-то из клиентских библиотек не найдена. Под Windows, вы можете использовать Visual Studio dependency walker.
Скомпилируйте Qt с установленным QT_DEBUG_COMPONENT, чтобы получить более подробную отладочную информацию во время загрузки плагинов.
Если у вас возникли проблемы с загрузкой плагинов и вы видите ошибку вроде этой:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QMYSQL
проблема, вероятно, в том, что плагин имеет неправильный ключ сборки. Для отладки удалите соответствующую запись в файле $HOME/.qt/qt_plugins_(qtversion).rc.
После чего снова попытайтесь загрузить этот плагин, и вы получите более детальное описание ошибки.
=)
Записан
Detonator
Гость
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #4 :
Декабрь 21, 2008, 10:09 »
Имеется в виду что динамические плагины нельзя загружать в статической версии, хотя есть примеры когда и это можно обойти. В статическую версию можно все нужные плагины прикомпилить сразу.
Записан
wyvern
Гость
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #5 :
Декабрь 24, 2008, 16:23 »
собрал с ключом -qt-sql-oci с указанием необходимых путей
все получилось, как и ожидалось
собираю теперь проект без всякой ерунды. просто подключил к проекту QtSql.lib (раньше тоже подключал) и oci.lib (с указанием пути). проект нормально собирается и запускается. однако для запуска потребовалось кинуть в папку с программой файл oci.dll.
так вот. запуск-то происходит, но при подключении к БД вылетает ошибка:
QOCIDriver: unable to create environment
lastError() сообщает: Unable to logon
опять непонятно, что делать
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1964
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #6 :
Декабрь 24, 2008, 16:40 »
насколько я помню оракл
для работы вашей программы ему нужен набор библиотек называемый oracle client
и там несколько десятков мегобайт
аналогичная
тут
- не решена
а вам наверно
сюда
Записан
wyvern
Гость
Re: Visual Studio 2005 | LNK2019 - не линкуется статический плагин qsqlodbc
«
Ответ #7 :
Декабрь 24, 2008, 17:05 »
Цитата: Admin от Декабрь 24, 2008, 16:40
а вам наверно
сюда
я там уже был
а на моей машине уже стоит оракловский клиент, что меня и смущает
если попробовать вместо QOCI использовать QODBC, а он у меня не установлен, то среди ошибок вываливается сообщение:
QSqlDataBase: available drivers: QOCI8 QOCI
из чего я делаю вывод, что драйвер оракла нормально установился
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...