Russian Qt Forum

Qt => Базы данных => Тема начата: bronstein87 от Январь 17, 2017, 16:18



Название: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: bronstein87 от Январь 17, 2017, 16:18
Откомпилил релизную версию приложения работающего с бд, накидал в папку все нужные длл-ки, длл-ки самого постгреса тоже положил, добавил плагин драйвера пострегса, после чего экзешник перестал чего-либо еще требовать и запустился. Затем я перенес приложение на другую машину, но там приложение почему-то не видит драйвер. Я уже замучался с этим, кто-нибудь, кто работал с постгресом через qt, подскажите в чем может быть проблема? dependency walker на другом компе показывает, что всё окей. Возможно, нужно устанавливать клиент постргеса на другой машине?


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: PimenS от Январь 17, 2017, 17:36
qsqlpsql.dll где лежит?


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: bronstein87 от Январь 17, 2017, 17:39
qsqlpsql.dll где лежит?
\release\plugins\sqldrivers


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: PimenS от Январь 17, 2017, 17:42
Цитировать
Затем я перенес приложение на другую машину

и сделали там папку \release\plugins\sqldrivers?


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: bronstein87 от Январь 17, 2017, 17:48
Цитировать
Затем я перенес приложение на другую машину

и сделали там папку \release\plugins\sqldrivers?

да, \plugins\sqldrivers все это там есть


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: PimenS от Январь 17, 2017, 17:55
Чаще всего я использую такую структуру:

Код:
/MyProgram  
    /sqldrivers
        - qsqlpsql.dll
- myprogramm.exe
- Qt5Core.dll
- все остальные библиотеки

Попробуйте расположить плагины Qt не в "plugins\sqldrivers", а сразу в "sqldrivers"


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: PimenS от Январь 17, 2017, 18:02
Еще как вариант.

Часто нужно устанавливать распространяемые пакеты Visual C++, для правильной работы библиотек PostgreSQL.


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: GraninDm от Январь 18, 2017, 09:42
Это часть из моего инсталятора
[Files]
Source: "z:\Coding\qt\Reports\Reports-Desktop_Qt_5_6_0_MinGW_32bit\release\Reports.exe"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\Qt5Core.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\Qt5Gui.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\Qt5Sql.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\Qt5Widgets.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\Qt5SerialPort.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\libgcc_s_dw2-1.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\libwinpthread-1.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\libstdc++-6.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\icuin54.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\icuuc54.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}bin\icudt54.dll"; DestDir: "{app}"
Source: "{#Qt5DllDir}plugins\platforms\qwindows.dll"; DestDir: "{app}\platforms"
Source: "{#Qt5DllDir}plugins\sqldrivers\qsqlpsql.dll"; DestDir: "{app}\sqldrivers"
Source: "{#PgSqlDllDir}libpq.dll"; DestDir: "{app}"
Source: "{#PgSqlDllDir}libintl.dll"; DestDir: "{app}"
Source: "{#PgSqlDllDir}libeay32.dll"; DestDir: "{app}"
Source: "{#PgSqlDllDir}ssleay32.dll"; DestDir: "{app}"
Source: "c:\Windows\System32\msvcr100.dll"; DestDir: "{app}"


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: Hellraiser от Январь 18, 2017, 09:52
Чтобы не гадать, возьмите вот это (https://ru.wikipedia.org/wiki/Dependency_Walker) и проверьте на целевой машине на предмет недостающих модулей. Версия утилиты (x86 или x64) определяется не разрядностью ОС, а разрядностью исследуемой программы или библиотеки.


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: GraninDm от Январь 18, 2017, 09:57
Так он написал:
dependency walker на другом компе показывает, что всё окей


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: Пантер от Январь 18, 2017, 10:03
Мне под виндой помогало делать    QCoreApplication::addLibraryPath (QCoreApplication::applicationDirPath () + "/plugins/");
Правда, давно это было.


Название: Re: Не работает приложение с драйверов Postgresql на другой машине
Отправлено: Hellraiser от Январь 18, 2017, 10:04
Walker'ом нужно проверить не только сам *.exe, но и плагины тоже. Для Qt модели подключения плагинов он не умеет распознавать такие зависимости. А чудес не бывает - или чего-то не хватает, или другая разрядность библиотеки Postgre.