c++ - 虚拟机运行Qt程序报错 "QSQLITE driver not loaded"

标签 c++ sql qt sqlite qt4

我有一个 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/

相关文章:

MySql返回不存在

visual-studio - 在 Visual Studio (2008) 中为build设置环境变量

c++ - 我可以在继承自 QObject 的同时使用 QSharedData 吗?

c++ - std::chrono 的问题

c++ - 使用 BFS 寻找最短路径

c++ - 有关如何使 Z3 更快地评估简单约束的建议

sql - PostgreSQL 中 INNER JOIN 中字段的 SUM

mysql - Zeoslib : How to tell if query is still processing?

Qt国际化和CMake : how to update *. ts,不要失去它们

c++ - Visual Studio 2013 C++ : STL container's elements display in debugger