我正在使用QtRuby和PostgreSQL开发一个应用程序。我在Linux中成功开发并运行成功。现在我想在Windows中运行相同的应用程序。但我无法连接到数据库(postgresql)。我收到以下错误:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
答案 0 :(得分:2)
正如错误消息所示,QtQL驱动程序无法与QtC进行对话。可能这个插件尚未编译。
如this how-to所示,您需要安装PostgreSQL开发人员库,然后手动构建Qt驱动程序插件。请参阅确切命令的操作方法。
答案 1 :(得分:0)
答案 2 :(得分:0)
在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个目录添加到系统路径
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 --dllname 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 release
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)))
完成: - )
浮士德
答案 3 :(得分:0)
大!完成! 但是有一些提示需要注意: 1. Mingw-utils,0.4-1不适用于Windows 7,我们必须使用0.3。 2. PSQL驱动程序目录中有一个psql.json文件,请不要删除它。