gpt4 book ai didi

qt - QSqlDatabase 在 Debug 中运行良好但在 Release 中运行不正常(需要 QCoreApplication)

转载 作者:行者123 更新时间:2023-12-02 22:02:51 25 4
gpt4 key购买 nike

我有一个使用 QSqlDatabase 在 Qt 中使用 SQLite 的应用程序,如果我在 Debug模式下编译,一切正常。我的问题是,当我切换到 Release模式时,没有任何效果。我的第一个错误似乎与引入 QtCore4.dll 和 QtGui4.dll 文件的代码有关。一旦我将这些文件移动到与编译代码相同的目录中,程序就会加载,但以下错误会写入 Qt Creator 控制台:

QSqlDatabase: QSQLITE driver not loaded

QSqlDatabase: available drivers:

QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins

我认为这可能来自的唯一一行是我在顶部让它成为全局的那一行:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

我的PRO文件如下:

QT       += core gui sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = LessonsLearned
TEMPLATE = app


SOURCES += main.cpp\
lessonslearned.cpp

HEADERS += lessonslearned.h

FORMS += lessonslearned.ui

我什至尝试重新安装 Qt 以查看是否可以解决问题。

重申一下……如果我编译 Debug,一切正常。出现问题的是Release。

我使用的是 Qt 4.7.3 和 Visual Studio 2008,以防出现某种可能导致问题的原因。

更新

我已将“QSqlDatabase db”的声明移到该类的头文件中,并将其设为私有(private)。我还将对 addDatabase("QSQLITE") 的调用移到了构造函数中:

LessonsLearned::LessonsLearned(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::LessonsLearned)
{
ui->setupUi(this);

db = QSqlDatabase::addDatabase("QSQLITE");
}

这使得需要 QCoreApplication 的错误消失了,但我仍然收到前两条消息。在 Debug 中仍然有效,但在 Release 中无效。我想知道程序是否仍然指向某处错误的 DLL。我已经尝试了更多的 dependency walker,但我还没有找到一个错误的。

更新 2我在这里找到了一些有用的东西:QSQLITE driver not loaded - where to put qt database driver plugins .我认为这与我遇到的问题相同。我仍然不知道为什么我必须修改 Release 目录以添加一个 sqldrivers 文件夹,但它有效。

最佳答案

对于发布问题:

如果引入 QtCode4.dllQtGui4.dll 解决了一些问题,那么引入 qsqlite4.dll 可能会解决剩下的问题.请注意,您必须将其放在可执行文件附近名为 sqldrivers 的文件夹中。

关于qt - QSqlDatabase 在 Debug 中运行良好但在 Release 中运行不正常(需要 QCoreApplication),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com