我需要什么.dll文件才能使QtSql正常运行

What .dll files do I need in order to get QtSql to run properly?

本文关键字:QtSql 正常运行 文件 什么 dll      更新时间:2023-10-16

我创建了一个执行一些SQL查询的Windows Qt C++应用程序。这个应用程序在我的开发机器上正确编译并运行。

我的PATH环境变量中有以下目录:

C: \oracle\product\10.2.0\db_1\bin
C: \instantclient_11_2
C: \QtSDK\mingw\bin
C: \Qt\4.7.4\bin

我想将我的应用程序作为独立程序分发到其他计算机,所以我在分发中包含了这些.dll文件:

QtCore 4.dll
QtGui4.dll
QtSql4.dll
qsqloci4.dll
mingwm10.dll
libgcc_s_dw2-1.dll

这就是我的代码中QSqlDatabase的设置方式:

    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
    db.setHostName(hostname);
    db.setPort(port);
    db.setDatabaseName(sid);
    db.setUserName(username);
    db.setPassword(password);
    bool ok = db.open();
    if (ok) {
        //stuff
    } else {
        QString dbErr = db.lastError().databaseText();
        QString drErr = db.lastError().driverText();
        return this->messageBox("SQL Query Failed:n" + dbErr + "n" + drErr);
    }

当我在不是我的开发机器的计算机上运行此应用程序时,dbErr和drErr设置为"Driver not loaded"。我还需要哪些.dll文件才能正确运行?

编辑:

我需要来自C:\oracle\product\10.2.0\db_1\bin的oci.dll吗
来自C:\instantclient_11_2的oci.dll怎么样?

我尝试将这两个文件都添加到可执行文件的目录中,但仍然出现相同的错误。我需要这两个.dll文件吗?

您需要在包含exe的目录中创建一个名为sqldrivers的文件夹。将您正在使用的所有SQL驱动程序dll放在那里(qsqloci4.dll(。

请参阅如何创建Qt插件-定位插件,了解有关使用Qt插件以及Qt如何找到它们的更多信息。