如何在Windows中使用Qt访问Postgresql

如何在Windows中使用Qt访问Postgresql,windows,postgresql,qtruby,Windows,Postgresql,Qtruby,我正在使用QtRuby和PostgreSQL开发一个应用程序。我成功地在Linux上开发并运行。现在我想在windows中运行相同的应用程序。但我无法连接到数据库(postgresql)。我收到以下错误: QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC 正如错误消息所说,QPSQL驱动程序不可用于Qt与Postgres进行对话。可能插件还没有编译 如前所述

我正在使用QtRuby和PostgreSQL开发一个应用程序。我成功地在Linux上开发并运行。现在我想在windows中运行相同的应用程序。但我无法连接到数据库(postgresql)。我收到以下错误:

 QSqlDatabase: QPSQL driver not loaded
 QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

正如错误消息所说,QPSQL驱动程序不可用于Qt与Postgres进行对话。可能插件还没有编译

如前所述,您需要安装PostgreSQL开发人员库,然后手动构建Qt驱动程序插件。有关确切的命令,请参见操作指南

  • 按照以下说明编译QPSQL插件:
  • 将PostgreSQL bin路径添加到path环境变量中

  • 在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并删除定义开头的所有“389;”

    dlltool--输入def libpq.def--输出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进行调试

    mingw32发布

    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)

    替换:

    #如果NDEF具有_STRUCT_TIMESPEC

    与:

    #如果((!defined(_TIMESPEC_defined))&(!defined(HAVE_STRUCT_TIMESPEC)))


    完成:-)

    浮士德

    太好了!完成了! 但是,有一些提示需要注意: 1.Mingw utils,0.4-1在Windows7上不起作用,我们必须使用0.3。
    2.psql驱动程序目录中有一个psql.json文件,请不要删除。

    谢谢您的回复。我编译了驱动程序,它生成了qsqlpsql4.dll,但仍然得到了相同的错误。我现在该怎么办。你好,我知道这篇文章已经有一段时间了。但我试图让这项工作没有成功。在我的例子中,它不会加载驱动程序,但会将其列为可用。另外,我没有编译插件的代码。我安装了QtOpenSource,试图修改它并下载代码,但安装程序没有提供插件代码。我该怎么办?