我有一个 Qt4 程序,它只打开一个 Qt 数据库:
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(fileName);
if (!db.open()) {
qDebug() << db.lastError().text();
}
我从资源管理器运行程序,在目录中我只有 exe 和它需要的 DLL:Test.exe QtCore4.dll QtSql4.dll QtGui4.dll
相同的 exe 和 DLL 在我自己的计算机上执行时可以正常工作,但在虚拟机中执行时会失败并出现以下错误:
[2784] QSqlDatabase: QSQLITE driver not loaded
[2784] QSqlDatabase: available drivers:
db.lastError().text()
返回“Driver not loaded Driver not loaded”(是的,它重复了两次)。
为什么它可以在我的电脑上运行?如果缺少依赖项,我假设它在我自己的计算机上也会失败,因为它只在自己的目录中查找它需要的所有 DLL。显然有一个它在我的计算机上找到的依赖项,但在虚拟机上没有找到,并且它必须在其他地方寻找它(不仅仅是在 exe 所在的目录中)。
最佳答案
您还应该将 qsqlite4.dll
放在可执行文件旁边的名为 sqldrivers
的目录中。
关于c++ - 虚拟机运行Qt程序报错 "QSQLITE driver not loaded",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721726/