Название: [РЕШЕНО] QIBASE: Driver not loaded Отправлено: UltraPenguin от Апрель 20, 2015, 16:33 Доброго времени суток!
Есть приложение и dll к нему, юзающая InterBase 9. Вот структура каталогов: %appdir%/myapp.exe %appdir%/gds32.dll - взят из папки bin Interbase'a %appdir%/sqldrivers - все имеющиеся драйвера БД, в т.ч. qsqlibase(d)4.dll %appdir%/DB/db.dll - собственно dll работы с БД. Доступа к коду самого приложения нет, только к коду отлаживаемой dll. Работа ведется в MSVS2010 с использованием Qt 4.8.6. qsqlibase компилировал согласно инструкции тут: http://doc.crossplatform.ru/qt/4.5.0/sql-driver.html#qibase-for-borland-interbase (http://doc.crossplatform.ru/qt/4.5.0/sql-driver.html#qibase-for-borland-interbase) Вот содержание ibase.pro: Код: TARGET = qsqlibase Вот содержание сгенерированного pro файла отлаживаемой dll: Код: TEMPLATE = lib Создание объекта БД: Код: db_ = QSqlDatabase::addDatabase(opts_.dbEngine(), uid_); isValid() возвращает false, а в db_.lastError() "Driver not loaded" и в db_.drivers() "QSQLITE QODBS и другие, кроме QIBASE". Кто-нибудь сталкивался с подобным? UPD Dovgon (спасибо ему за это) натолкнул на мысль, что драйвер БД может находиться не в той папке. И действительно он искался только по стандартному пути %QTDIR%/plugins/sqldrivers/. Название: Re: QIBASE: Driver not loaded Отправлено: Dovgon от Апрель 21, 2015, 08:36 Пытаешься запустить из Qt creator?
Название: Re: QIBASE: Driver not loaded Отправлено: UltraPenguin от Апрель 21, 2015, 11:18 Нет. Использую MSVS
Название: Re: QIBASE: Driver not loaded Отправлено: sociopath от Апрель 21, 2015, 14:07 Есть предположение, что виновата строчка в проектнике драйвера LIBS += C:\CodeGear\InterBase\SDK\lib_ms\gds32_ms.lib . В рантайме скорее всего будет искать либу с именем gds32_ms.dll, а не gds32.dll (ну и соответственно он не находит, и драйвер не грузится).
А вообще не надо гадать на кофейной гуще, а пройтись dependency walker'ом по скомпилированному файлу драйвера, и увидеть, какую именно он библиотеку не подцепил. Название: Re: QIBASE: Driver not loaded Отправлено: Dovgon от Апрель 21, 2015, 19:39 Посмотри пути откуда загружаются библиотеки
QApplication a(argc, argv); qDebug()<<a.libraryPaths(); Название: Re: QIBASE: Driver not loaded Отправлено: UltraPenguin от Апрель 22, 2015, 11:16 Есть предположение, что виновата строчка в проектнике драйвера LIBS += C:\CodeGear\InterBase\SDK\lib_ms\gds32_ms.lib . В рантайме скорее всего будет искать либу с именем gds32_ms.dll, а не gds32.dll (ну и соответственно он не находит, и драйвер не грузится). А вообще не надо гадать на кофейной гуще, а пройтись dependency walker'ом по скомпилированному файлу драйвера, и увидеть, какую именно он библиотеку не подцепил. dependency walker'ом прошелся первым делом, ничего криминального нет, все в наличии. По поводу gds32_ms: точно дело не в этом. Название: Re: QIBASE: Driver not loaded Отправлено: UltraPenguin от Апрель 22, 2015, 11:18 Посмотри пути откуда загружаются библиотеки QApplication a(argc, argv); qDebug()<<a.libraryPaths(); Хм... QApplication можно использовать в коде dll-ки? |