我正在使用 QtRuby 和 PostgreSQL 开发一个应用程序。我在Linux上成功开发并成功运行。现在我想在 Windows 中运行相同的应用程序。但我无法连接到数据库(postgresql)。我收到以下错误:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
我正在使用 QtRuby 和 PostgreSQL 开发一个应用程序。我在Linux上成功开发并成功运行。现在我想在 Windows 中运行相同的应用程序。但我无法连接到数据库(postgresql)。我收到以下错误:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
正如错误消息所说,Qt 无法使用 QPSQL 驱动程序与 Postgres 对话。可能插件还没有编译。
如本方法所示,您需要安装 PostgreSQL 开发人员库,然后手动构建 Qt 驱动程序插件。有关确切命令,请参阅操作方法。
伟大的!完成!不过有一些小技巧要注意: 1. Mingw-utils,0.4-1在Windows 7上是不行的,一定要用0.3。2. PSQL驱动目录下有一个psql.json文件,请勿删除。
在 Windows 中使用 QT 的 Postgresql:如何编译驱动程序 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 有用的格式:
光盘 C:\PSQL32\lib
REIMP -d libpq.lib
打开 libpq.def 并删除定义开头的所有“_”
dlltool --input-def libpq.def --output-lib libpq.a --dllname libpq.dll
5)编译:
光盘 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-进行调试
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 有多种定义
在 PostgreSQL 的文件pthread.h (C:\PSQL32\include\pthread.h)
代替:
#ifndef HAVE_STRUCT_TIMESPEC
和:
#if ((!defined(_TIMESPEC_DEFINED)) && (!defined(HAVE_STRUCT_TIMESPEC)))
完毕 :-)
浮士德