Название: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: vlad-mal от Ноябрь 11, 2010, 11:58 Всем привет.
Под утро совсем мозги склеились, посему прошу помощи: Выполни сборку драйвера QIBASE с помощью батника следующего содержания: Код: set QTDIR=C:\Qt\2010.05\qt В результате чего в подкаталоге C:\Qt\2010.05\qt\plugins\sqldrivers появились 4 новых файла: Код: qsqlibase4.dll Код: QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE"); Вижу, что: QSqlDatabase: QIBASE driver not loaded QSqlDatabase: available drivers: QFIREBIRD QSQLITE QODBC3 QODBC Может быть, сборка выполнена неправильно? Если следовать документации буквально: Цитировать How to Build the QIBASE Plugin on Windows - то сборку выполнить вообще невозможно (из-за "LIBS+=-lfbclient"). Вследствие чего и был написан приведенный выше батник.The following assumes InterBase or Firebird is installed in C:\interbase: ... If you are using Firebird, the Firebird library has to be set explicitely: Код: cd %QTDIR%\src\plugins\sqldrivers\ibase ... Что бы еще покрутить? ::) Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: Пантер от Ноябрь 11, 2010, 12:05 ......available drivers: QFIREBIRD..........
Какбэ намекает. Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: vlad-mal от Ноябрь 11, 2010, 12:08 Пантер, я пробую и тот, и другой.
В частности, работа со Stored Procedures интересует и с Returning значениями. В "стандартном" работа с эвентами есть. Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: vlad-mal от Ноябрь 11, 2010, 12:12 Да, c QIBASE получилось: просто недочитал один абзац документации:
Цитировать Troubleshooting ... Ensure that the client libraries of the DBMS are available on the system. Положил возле .exe клиентскую библиотеку (fbclient.dll), и все заработало. (А с QFIREBIRD драйвером - не надо было? :o) ... Блин, вот ведь документация - и с ошибками, и вообще фиг догадаешься.... Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: vlad-mal от Ноябрь 11, 2010, 12:37 ...Положил возле .exe клиентскую библиотеку (fbclient.dll), и все заработало. (А с QFIREBIRD драйвером - не надо было? :o) ... Ха, оказывается, там сама ibpp клиентскую библиотеку ищет, в следующем порядке: Цитировать - fbembed.dll from the host application executable directory, - fbclient.dll from the host application executable directory, - fbclient.dll from the directory specified by the DefaultInstance registry value of the SOFTWARE\Firebird Project\Firebird Server\Instances registry key, - fbclient.dll without specifying any path, such that the system will choose locations from which to try (usually the system directories) - gds32.dll, for compatibility purposes, without specifying any path, the system will decide from which locations to try (usually the system directories). Да, FireBird - хитрая штука, не два байта переслать... Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: lit-uriy от Ноябрь 11, 2010, 14:26 >>Положил возле .exe клиентскую библиотеку
старая песня о главном, используемые библиотеки должны быть доступны, на виндовозе это означает, что в переменной окружения PATH должен быть путь к ней Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: crossly от Ноябрь 11, 2010, 14:50 Цитировать Да, FireBird - хитрая штука, не два байта переслать... и дело тут совсем не в firebird... как уже сказал Юрий... все динамически линкуемые библиотеки должны быть доступны....Название: Re: Qt 4.7 (MinGW) + FireBird 2.5 : driver not loaded Отправлено: vlad-mal от Ноябрь 11, 2010, 20:09 Ну...
Параллельно с QIBASE я экспериментировал с QFIREBIRD, было странным видеть, что QFIREBIRD доступна, а QIBASE - нет: и сервер, и клиентская библиотека у меня одна и та же. При работе с QFIREBIRD я не выкладывал fbclient.dll ни в system, ни в каталог программы - все работало. Естественно, ожидал того же поведения от QIBASE. Выяснилось, что из-за того, что у QFIREBIRD в качестве ядра используется библиотека ibpp, никаких fbclient.dll "подкладывать" не надо было: она ищет fbclient.dll не просто по "системному" пути, а в т.ч. и по записи в реестре об исталляции FB (HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances\DefaultInstance). Век живи - век учись. |