美好的一天,我正在用Qt和sqlite編寫小型項目。所有在Linux和安裝了Qt框架的窗口中都很好用。但是當我試圖在沒有Qt的PC上運行它時,會出現一些問題。Qt 5.8,sqlite和windows中的部署
也就是說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);
}
...
}
當我試圖連接到數據庫,我收到 「未加載驅動程序」 的錯誤。谷歌說,它可以插入qsqlite.dll找不到正確的路徑。我試圖將這個.dll放在子目錄./sqldrivers/,它是如何在文檔中說的;在./plugins/sqldrivers/,直接在項目目錄 - 所有沒有結果。在實驗中,我發現從Qt框架目錄(D:\ Qt \ 5.9.1 \ mingw53_32 \ plugins \ sqldrivers)加載的qsqlite.dll,但從來沒有從項目目錄。在與Qt框架的電腦上 - 如果我重命名或移動D:\ Qt \ 5.9.1 \ mingw53_32 \ plugins \ sqldrivers \ qsqlite.dll - 程序停止工作。
我嘗試了許多變種QCoreApplication :: setLibraryPaths,qApp-> addLibraryPath,但它們都沒有結果。
詢問想法。
你是否試圖將dll與執行文件放在同一目錄級別? –
是的,與可執行文件相同的目錄,。\ sqldrivers和。\ plugins \ sqldrivers - 沒有效果。 C:\ windows \ system32也試過。 – alchemist772