Russian Qt Forum

Qt => Базы данных => Тема начата: Jo от Май 28, 2010, 13:19



Название: Fb driver
Отправлено: Jo от Май 28, 2010, 13:19
Может кто нить по пунктам рассказать как подрубить птицу к куту?

Все время пишет: драйвер нот лодед.. поискал по форуму вроде все сделал прально, собрал плагин в папке "D:\Qt\4.5.0\plugins\sqldrivers" появились след файлы:
               qsqlibased4.exp qsqlibased4.dll qsqlibased4.lib   как я понял для дебага и
               qsqlibase4.exp qsqlibase4.dll qsqlibase4.lib        для релиза

я их копировал и в папку проекта и куда только не копировал, все пишет драйвер нот лодед
Как я понимаю тема избитая, може кто поделится ссылочкой или напишет как пофиксить... вообще мне надо embedded прикрутить, но для начала хотя бы с этим разобраться


Зарание благодарен.


Название: Re: Fb driver
Отправлено: crossly от Май 28, 2010, 13:32
возможно поможет чистка ветки реестра HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.6.false


Название: Re: Fb driver
Отправлено: Jo от Май 28, 2010, 14:01
дык надо удалить разделы внутри или что то добавить?


Название: Re: Fb driver
Отправлено: crossly от Май 28, 2010, 14:36
удалить весь


Название: Re: Fb driver
Отправлено: lit-uriy от Май 28, 2010, 19:05
и при работе программы нужно, чтобы птиц был доступен в окружении (переменная PATH)


Название: Re: Fb driver
Отправлено: crossly от Май 31, 2010, 14:01
либо положить dll к exe


Название: Re: Fb driver
Отправлено: Jo от Июнь 01, 2010, 12:20
Qt Plugin Cache 4.6.false этот раздел удалил, он появляется снова, дллки доступны в PATH,
но все ровно пишет драйвер нот лодед...

Плагины собирал след образом:
    Открыл в студии проект D:\Qt\4.6.0\src\plugins\sqldrivers\ibase\ibase.pro
    Подключил папку с хидерами птицы D:\Firebird\Firebird_2_1\include\
    Скорпировал fbclient_ms.lib в папку проекта и переименовал ее в gds32_ms.lib
    Прописал путь к бинарникам птици в PATH.
    Собрал проект, получил на выходе в этой папке D:\Qt\4.6.0\plugins\sqldrivers\
    3 файла qsqlibase4.dll, qsqlibase4.lib, qsqlibase4.exp
    тудаже добавил и эти же файлы только с буквой "d" для дебаг версий.

После всего проделанного в реестре появился раздел  HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.6.false

Что это за раздел почему он появляется и что я не так делаю? Очень прошу помощи....
Буду очень благодарен!

P.S. Может имеет значение в чем строил? В прошлый раз строил в QtCreator, в этот раз собрал в студии.. ((


Название: Re: Fb driver
Отправлено: break от Июнь 01, 2010, 14:04
Цитировать
Может имеет значение в чем строил? В прошлый раз строил в QtCreator, в этот раз собрал в студии.

Имеет значение не в чем в смысле IDE а каким компилятором - если в Creator-е использовался компилятор Microsoft - то без разницы, а вот если minGW то работать не будет. В общем смысле Qt и драйвер должны быть собраны одним компилятором. В линукс для работы драйвера достаточно положить его в папку qt/plugins/sqldrivers а вот в windows не пробовал не разу...


Название: Re: Fb driver
Отправлено: Jo от Июнь 01, 2010, 14:26
тогда все собрано одним комп.
драйвера лежать в папке D:\Qt\4.6.0\plugins\sqldrivers

нарыл такой прмер где надо явно указать расположение плагинов

Код:
QStringList list_path;    
QDir dir = QDir(a.applicationDirPath()+"/sqldrivers/");    
list_path << dir.absolutePath () << a.libraryPaths();    
a.setLibraryPaths( list_path  );

но не помогло

итого получается что эти файлы есть как в папке программы так и в Qt\plugins\sqldrivers\:
      qsqlibased4.dll
      qsqlibased4.lib
      qsqlibase4.dll
      qsqlibase4.lib

Нужный раздел реестра снесен
В переменной PATH указан путь до бинарников FB

Результат: Driver not loaded...

Ребят кто знает что делать? Может кто скажет кто как по пунктам решал эту проблему или подобную?


Название: Re: Fb driver
Отправлено: break от Июнь 01, 2010, 16:06
вероятно саму библиотеку плагина Qt находит - но не может ее загрузить т.к. та не находит библиотеку сервера БД - надо выяснить какие библиотеки требуются ей и проверить доступны ли они в path


Название: Re: Fb driver
Отправлено: lit-uriy от Июнь 01, 2010, 17:11
>>Ребят кто знает что делать?
Dependency Walker (http://www.dependencywalker.com/) в помощь, запусти в нём свою софтину, он покажет, что и откуда пытается загрузить твоё приложение.


Название: Re: Fb driver
Отправлено: Jo от Июнь 01, 2010, 19:32
Как то все решилось...
Опишу по шагам:
Скопировал fbclient_ms.lib из D:\Firebird\Firebird_2_1\lib и переименовал в fbclient.lib в папку проекта
D:\Qt\4.6.0\src\plugins\sqldrivers\ibase\

Затем открыл в QtCreator прокект D:\Qt\4.6.0\src\plugins\sqldrivers\ibase\ibase.pro

в конфигурации пректа в разделе этапы сборки в дополнительных параметрах указал такую строчку:
-o Makefile INCLUDEPATH+=D:\Firebird\Firebird_2_1\include LIBS+=-lfbclient

собрал в режиме дебаг и релиз
В результате в папке D:\Qt\4.6.0\plugins\sqldrivers появились нужные файлы qsqlibase4.* и qsqlibased4.*

собсно драйвер есть...

так же при использовании embedded  версии fb необходимо переименовать файл fbembed.dll в fbclient.dll и положить в папку с екзешником..

все должно работать у меня наконец заработало..

ЗЫ так и не понял в чем грабли просто с 5ого раза одних и тех же действий заработало. видно был косяк на этапе сборки

Всем огромное спасибо!
Тема закрыта