为了让QtSql正常运行,我需要什么.dll文件?

时间:2011-11-22 16:33:36

标签: c++ qt qt4

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

我在PATH环境变量中有这些目录:

  

C:\ ORACLE \产品\ 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设置为“Driver not loaded”。我需要哪些其他.dll文件才能使其正常运行?

编辑:

我是否需要C:\ oracle \ product \ 10.2.0 \ db_1 \ bin中的oci.dll?
那么来自C:\ instantclient_11_2的oci.dll呢?

我尝试将这两个文件添加到我的可执行文件目录中,但我仍然遇到同样的错误。我是否需要以某种方式同时使用这两种.dll文件?

1 个答案:

答案 0 :(得分:1)

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

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