0

我正在尝试使用 PostgreSQL 的 QSqlDatabase hello world 应用程序。我的环境如下:Windows 7 64位,Qt 4.8.2,PostgreSQL 9.0.13。以下代码编译,但不会调试,即当我在 QSqlDatabase::drivers() 行上放置一个中断时,但代码退出并出现异常。当我注释掉这一行时,应用程序按预期运行。有什么建议么?

#include <QApplication>
#include <QMainWindow>
#include <QtSql/QtSql>
#include <QtSql/QSqlDatabase>

int main(int argc, char *argv[])
{
    QApplication prog(argc, argv);
    QMainWindow *mainWin = new QMainWindow;
    QStringList drvlst = QSqlDatabase::drivers();  // <-- problem!
    mainWin->show();

    return prog.exec();
}
4

1 回答 1

0

DLL 地狱的另一个例子,以及 Dependency Walker 如何成为诊断这种性质的潜在错误的好工具。同样,在这种情况下,链接器正在遍历 PATH 环境变量以查找 QTSQLD4.DLL 库依赖项。链接器找到了 openVPN SSLEAY32.DLL(实际上是 64 位)而不是 SSLEAY32.DLL 的 postgreSQL 版本。将 openVPN url 移动到 PATH 环境变量的末尾解决了这个问题。

于 2013-12-05T16:23:52.053 回答