QSqlDatabase: QPSQL driver not loaded
-
updated: this is what I got from QT_DEBUG_PLUGINS:
"The plugin 'D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlodbcd.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" not a plugin QFactoryLoader::QFactoryLoader() looking at "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll" Found metadata in lib D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QPSQL7", "QPSQL" ] }, "archreq": 0, "className": "QPSQLDriverPlugin", "debug": false, "version": 331264 } Got keys from plugin meta data ("QPSQL7", "QPSQL") QFactoryLoader::QFactoryLoader() looking at "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll" Found metadata in lib D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll, metadata= { "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": { "Keys": [ "QPSQL7", "QPSQL" ] }, "archreq": 1, "className": "QPSQLDriverPlugin", "debug": true, "version": 331264 } "The plugin 'D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" not a plugin QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/nkbar/Documents/build-myRPG_alpha-Desktop_Qt_5_14_0_MSVC2017_64bit-Release/Server/release/sqldrivers" ... Cannot load library D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsql.dll: The specified module could not be found. QLibraryPrivate::loadPlugin failed on "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll" : "Cannot load library D:\\Qt\\5.14.0\\msvc2017_64\\plugins\\sqldrivers\\qsqlpsql.dll: The specified module could not be found." QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 QFactoryLoader::QFactoryLoader() checking directory path "D:/Qt/5.14.0/msvc2017_64/plugins/accessible" ... QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/nkbar/Documents/build-myRPG_alpha-Desktop_Qt_5_14_0_MSVC2017_64bit-Release/Server/release/accessible" ... QFactoryLoader::QFactoryLoader() checking directory path "D:/Qt/5.14.0/msvc2017_64/plugins/accessiblebridge" ... QFactoryLoader::QFactoryLoader() checking directory path "C:/Users/nkbar/Documents/build-myRPG_alpha-Desktop_Qt_5_14_0_MSVC2017_64bit-Release/Server/release/accessiblebridge" ...
I checked "D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsqld.dll" and I did found the dll which the debugger reports as missing. And I am also confused about why it complains about "'D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll' uses incompatible Qt library.
The kit I am using is msvc2017 64bit and the postgre I downloaded is also for 64bit.
Errors:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7OS: win10 64bit
qt: 5.14.0
kit: msvc2017 64bit
PostgreSQL: 12.1Sqlite works well, but my project just can't work with PostgreSQL.
I followed the official instruction: https://doc.qt.io/qt-5/sql-driver.html#qpsql
Got no error but still couldn't connect to PostgreSQL. Same error messages saying that "QPSQL driver not loaded".
I have also tried other solutions from here and stackoverflow and reinstall my qt 4 times, No luck still. I am really frustrated now and don't know what to do.
the .pro:
QT += core network gui widgets sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 QTPLUGIN += QPSQL QT_DEBUG_PLUGINS=1 # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 #INCLUDEPATH += "D:\psql\include" #LIBS += "D:\psql\lib\libpq.lib" SOURCES += \ battle.cpp \ creature.cpp \ player.cpp \ server.cpp \ servermain.cpp \ serverwindow.cpp \ serverworker.cpp HEADERS += \ battle.h \ creature.h \ data_structs.h \ player.h \ server.h \ serverwindow.h \ serverworker.h FORMS += \ serverwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target RESOURCES += \ resource.qrc
-
@nkbartc said in QSqlDatabase: QPSQL driver not loaded:
Cannot load library D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsql.dll: The specified module could not be found.
QLibraryPrivate::loadPlugin failed on "D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll" : "Cannot load library D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsql.dll: The specified module could not be found."You're most likely missing libpq.dll in your PATH / in your folder of your executable.
-
@nkbartc said in QSqlDatabase: QPSQL driver not loaded:
PostgreSQL12.1 is for 64bit. Could this cause the problem?
If your app is 32 bit, then yes.
Regards
-
Use dependency walker on qsqlpsql.dll to see what's missing. Maybe a msvcrt runtime
-
I am using kit: msvc2017 64bit.
I suppose that I should run dependency walker on qsqlpsql.dll at
D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers ?Thanks
-
@nkbartc said in QSqlDatabase: QPSQL driver not loaded:
I suppose that I should run dependency walker on qsqlpsql.dll at
yes
-
Please take a look at the direct dependencies
-
@nkbartc said in QSqlDatabase: QPSQL driver not loaded:
I checked "D:\Qt\5.14.0\msvc2017_64\plugins\sqldrivers\qsqlpsqld.dll" and I did found the dll which the debugger reports as missing. And I am also confused about why it complains about "'D:/Qt/5.14.0/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll' uses incompatible Qt library.
On windows debug and release libraries are different binaries and can't be loaded interchangeably (unlike with linux). You probably need to build the driver with debug.