Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
QT5:无法在windows中加载psql驱动程序_Windows_Qt_Postgresql - Fatal编程技术网

QT5:无法在windows中加载psql驱动程序

QT5:无法在windows中加载psql驱动程序,windows,qt,postgresql,Windows,Qt,Postgresql,我想在Windows7中加载qt5 psql驱动程序 我已按以下方式加载库: qDebug() << QCoreApplication::libraryPaths (); QString driverName = "QPSQL"; QSqlDatabase::addDatabase(driverName,"A connection to postgres"); 在目录:C:/QT/Qt5.1.0/5.1.0/msvc2010/plugins/中,确实有sqldrivers子目录和子

我想在Windows7中加载qt5 psql驱动程序

我已按以下方式加载库:

qDebug() << QCoreApplication::libraryPaths ();
QString driverName = "QPSQL";
QSqlDatabase::addDatabase(driverName,"A connection to postgres");
在目录:
C:/QT/Qt5.1.0/5.1.0/msvc2010/plugins/
中,确实有
sqldrivers
子目录和子目录中的
qsqlpsql.dll、qsqlpsqld.dll、qsqlpsqld.pdb

我在ubuntu中成功加载了psql库

而我的.pro文件主要是这样的:

QT += core gui sql concurrent

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

unix {
LIBS += -lpython2.7 
QMAKE_CXXFLAGS += -std=c++0x
}

win32 {   
LIBS += \
    C:/Python27/libs/python27.lib 
}
我找不到它失败的原因

是否需要在.pro文件中添加libpqdll.lib?但是我没有在ubuntu中使用
LIBS+=-lpq

顺便说一句:我未能在Windows7中使用VisualStudio2010构建libpq。但这是另一个问题


这个问题可能很简单。但是我试了整整一天。

很可能是在程序请求驱动程序后调用
LoadLibrary
时,无法动态链接
qsqlpsql.dll
文件
LoadLibrary
返回与目标DLL所依赖的DLL之一丢失或无法加载时相同的错误代码。因此Qt很可能会出现“library not found”错误,并假设“哦,Pg驱动程序一定不在这个Qt版本中”,实际上它存在,并且由于依赖性问题、库兼容性问题等而无法加载

要确定它无法加载的原因,您可以按照Frank Osterfeld的建议使用类似的工具。如果您在64位机器上编译32位代码,那么您希望获得32位依赖项walker

它很可能会失败,因为缺少
qsqlpsql.dll
的依赖项-要么是
libpq.dll
,要么是
libpq
构建所需的库之一。Dependency walker将帮助隔离这一点。也可能您正试图在32位程序中加载64位
libpq.dll
,反之亦然

您还可能会发现,使用Process Monitor跟踪程序来运行程序会提供信息。这将产生许多关于它试图打开/检查哪些文件的详细信息,以及其他信息,并有助于跟踪意外的
PATH
问题


如果您仍然被卡住,则始终可以选择使用调试器进行调试。

尝试将libmysql.dll复制到C:\Windows\Systems32

如果驱动程序作为插件加载,则无需在链接时链接任何内容,但您必须确保所有依赖项(libpq,请与Dependency Walker联系了解更多信息)在运行时加载插件时可以找到这些属性。@FrankOsterfeld:感谢您通知依赖项步行工具。我试试看。还有其他的解决方案。非常感谢。你的回答很清楚。我将尝试编译libpq.dll,或者下载一个合适的libpq.dll。我还需要了解如何使用这些工具。@AylwynLake如果可能的话,您应该使用编译Qt的
qsqlpgsql.dll
时使用的libpq。
QT += core gui sql concurrent

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

unix {
LIBS += -lpython2.7 
QMAKE_CXXFLAGS += -std=c++0x
}

win32 {   
LIBS += \
    C:/Python27/libs/python27.lib 
}