美好的一天,我正在用Qt和sqlite编写小项目。在安装了Qt框架的linux和windows中,一切都很好用。但是当我尝试在没有Qt的情况下在PC上运行它时会出现一些问题。
这就是DB连接的方式: databaseservice.h
class DatabaseService : public QObject
{
Q_OBJECT
public:
explicit DatabaseService(QObject *parent = 0);
...
private:
static QSqlDatabase db;
...
};
databaseservice.cpp
#include "databaseservice.h"
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>
QSqlDatabase DatabaseService::db = QSqlDatabase::addDatabase("QSQLITE");
DatabaseService::DatabaseService(QObject *parent) : QObject(parent)
{
db.setDatabaseName("1cprint.db");
if(!db.open()) //true
{
QMessageBox::critical(0,
"Database init error",
"Database returns error - " + getLastError()); //Driver not loaded
exit(1);
}
...
}
当我尝试连接到DB时,我收到错误“Driver not loaded”。谷歌说它可能是插件 qsqlite.dll 在正确的路径中找不到。我试着把这个.dll放在子目录 ./ sqldrivers / 上,它在文档中说的如何;在 ./ plugins / sqldrivers / 中,直接在项目目录中 - 所有没有结果的。实验上,我发现从Qt框架目录(D:\ Qt \ 5.9.1 \ mingw53_32 \ plugins \ sqldrivers)加载了 qsqlite.dll ,但从未从项目目录加载。在带有Qt框架的PC上 - 如果我重命名或移动D:\ Qt \ 5.9.1 \ mingw53_32 \ plugins \ sqldrivers \ qsqlite.dll - 程序停止工作。
我尝试了许多 QCoreApplication :: setLibraryPaths,qApp-&gt; addLibraryPath 的变体,但它们都没有给出任何结果。
要求创意。
答案 0 :(得分:0)