Как получить доступ к Postgresql, используя Qt в Windows
Я занимаюсь разработкой приложения с использованием QtRuby и PostgreSQL. Я успешно разработал и успешно работает в Linux. Теперь я хочу запустить то же приложение в Windows. Но я не могу подключиться к базе данных (postgresql). Я получаю следующие ошибки:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
4 ответа
Как говорится в сообщении об ошибке, драйвер QPSQL недоступен для Qt, с которым можно общаться с Postgres. Возможно, плагин еще не скомпилирован.
Как показано в этом практическом руководстве, вам нужно установить библиотеки разработчика PostgreSQL, а затем вручную собрать плагин драйвера Qt. Смотрите инструкции для точных команд.
Postgresql с использованием QT в Windows: Как скомпилировать драйвер QPSQL - MinGw - Win7
1) проверьте каталог установки, в моем компьютере:
PostgreSQL (32 bit) C:\PSQL32\bin
Qt (32 bit) C:\QT\4.8.0\bin
MingW32 C:\QT\qtcreator-2.4.0\mingw\bin
2) добавить эти 3 каталога в системный PATH
3) Загрузите "mingw-utils" и установите в C:\Qt\4.8.0\bin (нужна утилита REIMP.exe)
4) Конвертируйте libpq.lib в полезный формат для mingw32:
CD C: \ PSQL32 \ lib
REIMP -d libpq.lib
Откройте libpq.def и удалите ВСЕ "_" в начале определений
dlltool --input-def libpq.def --output-lib libpq.a - имя_файла libpq.dll
5) Компиляция:
CD C: \ Qt \ 4.8.0 \ src \ plugins \ sqldrivers \ psql
qmake -o Makefile "INCLUDEPATH + = C: \ PSQL32 \ include" "LIBS + = C: \ PSQL32 \ lib \ libpq.a" psql.pro
mingw32-make debug
релиз mingw32-make
10) скопировать dll:
libqsqlpsqld4.a qsqlpsqld4.dll (debug)
libqsqlpsql4.a qsqlpsql4.dll (release)
в каталоге:
C:\Qt\4.8.0\plugins\sqldrivers
НОВАЯ проблема для QT версии 5.01
есть несколько определений struct timespec
в файле pthread.h PostgreSQL (C:\PSQL32\include\pthread.h)
заменить:
#ifndef HAVE_STRUCT_TIMESPEC
с:
#if ((! определено (_TIMESPEC_DEFINED)) && (! определено (HAVE_STRUCT_TIMESPEC)))
Готово:-)
Faust
Большой! Это сделано! Однако есть несколько советов, на которые следует обратить внимание: 1. Mingw-utils, 0.4-1 не будет работать в Windows 7, мы должны использовать 0.3. 2. В каталоге драйвера PSQL есть файл psql.json, пожалуйста, не удаляйте его.
- Скомпилируйте плагин QPSQL, как указано здесь: http://ldc.usb.ve/docs/qt/sql-driver.html
- Добавьте путь к папке PostgreSQL в переменную среды PATH