我创建了一个执行一些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文件?
答案 0 :(得分:1)
您需要在包含exe的目录中创建一个文件夹调用sqldrivers
。将您使用的所有SQL驱动程序DLL放在那里(qsqloci4.dll)。
有关使用Qt插件以及Qt如何找到它们的更多信息,请参阅How to Create Qt Plugins - Locating Plugins。