我正在使用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();
}
答案 0 :(得分:0)
DLL地狱的另一个例子以及Dependency Walker如何成为诊断此类潜在错误的绝佳工具。同样,在这种情况下,链接器遍历PATH环境变量以查找QTSQLD4.DLL库依赖项。链接器找到了openVPN SSLEAY32.DLL(实际上是64位)而不是SSLEAY32.DLL的postgreSQL版本。将openVPN url移动到PATH环境变量的末尾解决了这个问题。