c++ - 为了让 QtSql 正常运行,我需要哪些 .dll 文件?

标签 c++ qt qt4

<分区>

我创建了一个执行一些 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 文件:

QtCore4.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 被设置为“未加载驱动程序”。我还需要哪些其他 .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)。

参见 How to Create Qt Plugins - Locating Plugins有关使用 Qt 插件以及 Qt 如何找到它们的更多信息。

关于c++ - 为了让 QtSql 正常运行,我需要哪些 .dll 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8230233/

相关文章:

c++ - QChart 日志轴数据未显示

c++ - 我该如何做类似 if(2 variables) 的事情?

c++ - 如何 "move"Eigen::VectorXd s

c++ - 如何通过标准参数传递std::

c++ - 基类析构函数是否阻止生成移动构造函数

c++ - makefile 中的 qt gui 项目错误

c++ - c++ 中的 `rand()` 可以用于生成无偏 bool 值吗?

c++ - QTextEdit - 如何 "cancel"在 onKeyPress() 中输入键码

python - 使用 QNetworkAccessManager 进行 Qt HTTP 身份验证

QTableView/QStandardItemModel 更新而不丢失选择/排序顺序