首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt5.8,sqlite并在windows中部署

Qt5.8,sqlite并在windows中部署
EN

Stack Overflow用户
提问于 2017-09-06 06:52:14
回答 1查看 374关注 0票数 0

你好,我正在用Qt和sqlite写一个小项目。在安装了Qt框架的linux和windows中,所有这些都能很好地工作。但是当我试图在没有Qt的pc上运行它时,出现了一些问题。

这就是DB连接的方式: databaseservice.h

代码语言:javascript
复制
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时,我会收到“驱动程序未加载”错误。谷歌说,它可以是插件qsqlite.dll没有找到正确的路径。我试着将这个.dll放在子目录./sqldrivers/中,它在文档中是怎么写的;在./plugins/sqldrivers/中,直接放在项目目录中--所有这些都没有结果。从实验上,我发现qsqlite.dll是从Qt框架目录(D:\Qt\5.9.1\mingw53_32\plugins\sqldrivers)加载的,但从未从project加载。在带有Qt框架的pc上-如果我重命名或移动D:\Qt\5.9.1\mingw53_32\plugins\sqldrivers\qsqlite.dll -程序停止工作。

我尝试了许多QCoreApplication的变体::setLibraryPaths,qApp->addLibraryPath,但它们都没有给出结果。

想要个主意。

EN

回答 1

Stack Overflow用户

发布于 2017-09-07 08:55:05

终于找到了。将DatabaseService::db更改为非静态类成员--一切正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46068623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档