QT 生成的 exe 无法连接到 PostrgreSQL 数据库

QT´s generated exe cannot connect to PostrgreSQL Database

本文关键字:连接 PostrgreSQL 数据库 exe QT      更新时间:2023-10-16

我正在QT 5.4中开发一个连接到Postrgre数据库的应用程序。在QT Creator内部以发布模式运行应用程序时,连接工作正常。然而,当我添加.exe的依赖项并打开它时,我总是会收到一个连接错误。我将QT5Sql.dll添加到发布目录中,并根据dependencywalker添加了所有其他需要的依赖项。

有人能告诉我我做错了什么吗?

ui->setupUi(this);
finishedGame = false;
ui->detener->setVisible(false);
ui->labelEnCurso->setVisible(false);
db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("MYDB");
db.setUserName("USER");
db.setPassword("PASS");
bool ok = db.open();
if(!ok){
    QMessageBox msgBox;
    msgBox.setText("Connection ERROR");
    msgBox.exec();
}

更新

我用DebugView检查了.exe,这是我得到的错误:

[10876] QSqlDatabase: QPSQL driver not loaded
[10876] QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

我的发布文件夹中有libpq.dll和qsqlpsql.dll,但由于某种原因,该应用程序无法加载适当的驱动程序,尽管它说它可用。

我让它工作起来了。以防有人遇到同样的问题。我通过将PostgreSQL安装目录中bin文件夹的所有内容添加到QT项目的发布文件夹中来解决这个问题。