Страницы

Поиск по вопросам

воскресенье, 26 мая 2019 г.

Не видит драйвер QPSQL на другой машине Qt

Собрал релиз версию программы, которая работает с postgresql через qt-шный драйвер. Перенес туда все необходимые dll-ки, перенес папку plugins с драйвером. Экзешник запускается, драйвер видит, все замечательно. Но, когда переношу на другую машину драйвер qpsql не распознается. Я не уверен, но может быть на другую машину тоже нужно ставить клиент postgresql? Подскажите, кто сталкивался с подобной проблемой.
UPD:
В корне у меня находятся постгресовские dll: libeay32.dll libintl.dll libpq.dll ssleay.dll
DependencyWalker просит для самого драйвера:
LIBGCC_S_DW2-1.DLL LIBPQ.DLL LIBSTDC++-6.DLL QT5CORE.DLL QT5SQL.DLL
Но это, вероятно, нормально потому что он находится в \plugins, а то что он просит есть в корне.
dll постгреса просят следующее:
MSVCR120.DLL IESHIMS.DLL
Вероятно, msvcr120 - это и есть vcredist. Но, я поставил vcredistx86 и это не помогло. Компилил mingw32.


Ответ

Нет, клиент PostgreSQL ставить не нужно. Нужны 3 dll-библиотеки из комплекта PostgreSQL: libintl8.dll, libpq.dll, lib(забыл)-2.dll (это приблизительные названия, могу ошибаться, сейчас с собой нет Postgres). Располагаться они должны рядом с основным исполняемым файлом. Кроме того, Postgres скомпилирован в Visual Studio, поэтому вам понадобится установить vcredist. Необходимую версию можно узнать с помощью DependencyWalker. А также соблюдайте разрядность. Она должна быть одинаковая у вашей программы, у vcredist, у библиотек Postgres.
Драйвер базы данных необходимо поместить в папку sqldrivers. Причем, чтобы всё заработало, мне пришлось самому компилировать этот драйвер. Но раз у вас на основной машине всё работает, то, скорее всего, это не понадобится.
Если не найдёте, точные названия могу написать завтра.

UPD. Судя по названию MSVCR120.DLL, требуется vcredist версии 2013. ieshims.dll - это Internet Explorer. Скорее всего, этот файл будет не нужен. Файлы вроде Qt5Core.dll, Qt5Sql и др. должны быть рядом с исполняемым файлом, а файл qsqlpsql.dll должен быть в папке sqldrivers.

UPD. Вот список нужных DLL:
libiconv-2.dll libintl-8.dll libpq.dll

Комментариев нет:

Отправить комментарий