Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 32位Qt程序可以';在64位Windows 7上找不到Qt Postgres插件dll_C++_Qt_Windows 7_Postgresql 9.1_Mingw32 - Fatal编程技术网

C++ 32位Qt程序可以';在64位Windows 7上找不到Qt Postgres插件dll

C++ 32位Qt程序可以';在64位Windows 7上找不到Qt Postgres插件dll,c++,qt,windows-7,postgresql-9.1,mingw32,C++,Qt,Windows 7,Postgresql 9.1,Mingw32,我有一个用mingw构建的32位程序,它使用Qt的QSqlDatabase类访问Postgres数据库。我们将程序安装到c:\company\product\bin。我们将Qt-PSQL驱动程序插件qsqlpsql4.dll放在C:\company\product\bin\sqldrivers中 它在32位Windows7或32位WindowsXP上运行良好。在64位Windows 7上运行时,我得到以下输出: QSQLDABASE:QPSQL驱动程序未加载QSQLDABASE:可用驱动程序:

我有一个用mingw构建的32位程序,它使用Qt的QSqlDatabase类访问Postgres数据库。我们将程序安装到c:\company\product\bin。我们将Qt-PSQL驱动程序插件qsqlpsql4.dll放在C:\company\product\bin\sqldrivers中

它在32位Windows7或32位WindowsXP上运行良好。在64位Windows 7上运行时,我得到以下输出:

QSQLDABASE:QPSQL驱动程序未加载QSQLDABASE:可用驱动程序: QSQLITE QODBC3 QODBC

无法打开数据库连接。指定的驱动程序无效

它拒绝找到QPSQL驱动程序。我尝试过使用qt.conf文件,但没有效果


有人知道我遗漏了什么吗?

libpq.dll是否在路径中?而libpq的其他依赖项,如libeay、libiconv、libintl、ssleay?Hmmm、Dependency Walker显示找到了libpq.dll,但它是64位版本。这将是一个问题。它还报告了一些系统DLL的64位版本。我将尝试安装32位postgres。从哪里获取libpq.dll?postgresql网站?如果我假设您正在使用客户端服务器应用程序是正确的,那么为什么您需要在客户端计算机上安装db服务器来获取libpq.dll?你不能在二进制应用程序中提供它及其依赖项吗?libpq.dll来自postgres安装。我们的程序将始终(暂时)在安装数据库的同一台服务器上运行。要连接PostgreSQL,不需要特定的libpq.dll,但对于与dll链接的应用程序(任何,如果有关系),如果使用由不同编译器编译的同一版本dll,很难知道会出现什么问题,更不用说同一dll的不同版本了。因此,IMHO可以随应用程序一起提供任何版本的PostgreSQL server,但也可以提供应用程序上次使用的libpq.dll版本。更好的方法是,将自己的应用程序与应用程序一起编译。