Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Ошибка с драйвером БД

Автор: AD 15.10.2008, 13:19

Происходит ошибка при запуске моего приложения на других машинах. Как исправить эту ошибку?
Ошибка следующая:
[attachment=273:error.JPG]
Ошибка получена с помощью QSqlDatabase::database().lastError()

Автор: fsMark 15.10.2008, 13:22

А у тебя плагин драйвера на этой машине есть?
Посмотри список доступных драйверов бд..

Автор: Litkevich Yuriy 15.10.2008, 13:24

Qt-Плагина соответствующего нет. Ты вроде в курсе как их с собой таскать.

Автор: AD 15.10.2008, 13:56

Цитата(Litkevich Yuriy @ 15.10.2008, 14:24) *
Qt-Плагина соответствующего нет. Ты вроде в курсе как их с собой таскать.

мдя, блин.... Как его все-таки подключить правильно?

QString pluginsPath = qApp -> applicationDirPath() + QDir::separator() + "Plugins";
pluginsPath = pluginsPath.toLower();
qApp -> addLibraryPath(pluginsPath);

Вышеприведенного кода недостаточно... Что же еще надо сделать?

Автор: Litkevich Yuriy 15.10.2008, 14:01

я не использовал toLower()
И такой вопрос: Ты структуру каталогов сохраняешь в Plugins?

П.С. я http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows мануальчик написал

Автор: AD 15.10.2008, 14:47

Цитата(Litkevich Yuriy)
я не использовал toLower()
И такой вопрос: Ты структуру каталогов сохраняешь в Plugins?

П.С. я http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows мануальчик написал

Не понимаю, какую структуру каталогов?

Мануальчик как-то не очень помог! :( Очень срочно надо добиться того, чтобы приложение работало на машине без Qt!!! Пожалуйста, помогите как-нибудь.

Автор: Litkevich Yuriy 15.10.2008, 15:04

в каталоге %QTDIR%/Plugins/ лежат другие каталоги, вот структуру каталога %QTDIR%/Plugins/ и надо сохранить, т.е. не валить все dll'ки в одну кучу (в каталог %PATH_TO_APP%/QtPlugins/)

к стати не забудь перед новым эксперементом на целевой машине почистить кэш плагинов в реестре

Автор: AD 15.10.2008, 15:34

Цитата(Litkevich Yuriy @ 15.10.2008, 16:04) *
в каталоге %QTDIR%/Plugins/ лежат другие каталоги, вот структуру каталога %QTDIR%/Plugins/ и надо сохранить, т.е. не валить все dll'ки в одну кучу (в каталог %PATH_TO_APP%/QtPlugins/)

к стати не забудь перед новым эксперементом на целевой машине почистить кэш плагинов в реестре

Как именно почистить? %PATH_TO_APP% что за переменная? можно с примером, пожалуйста? Возможно что-то упустил, надо видеть все....

Получилось! :clapping:

Ребята, будьте внимательны:
кроме указанных строчек кода:
QDir dir(qApp -> applicationDirPath() + QDir::separator() + "plugins" + QDir::separator());
QStringList list_plugins;
list_plugins << dir.absolutePath() << a.libraryPaths();
a.setLibraryPaths(list_plugins);
©
Необходимо в папочке plugins создавать необходимые папочки и уже только туда класть dll!
В моем случае это
plugins/sqldrivers

Цитата(Litkevich Yuriy @ 15.10.2008, 15:01) *
П.С. я http://wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows мануальчик написал

Юра, в статье следует указать, что необходимо соблюдать иерархию каталогов для драйверов. Это не очевидно из статьи, а это очень влияет на работу приложения! :)

Автор: Litkevich Yuriy 15.10.2008, 15:40

Цитата(AD @ 15.10.2008, 19:34) *
Юра, в статье следует указать, что необходимо соблюдать иерархию каталогов для драйверов. Это не очевидно из статьи, а это очень влияет на работу приложения!


из мануала:
Цитата
Но, обязательно, сохраните структуру вложеных каталогов!


сделаю шаблон "Внимание" и "Замечание" потом статью подправлю

Автор: loro 19.4.2010, 21:26

Спасибо за статью, очень помогло.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)