QT 打包exe文件在外部机器无法使用sqlite

402 阅读1分钟

在开发应用时,在本地运行正常,通过QT接入sqlite,代码如下:

QSqlDatabase db;
if(QSqlDatabase::contains("qt_sql_default_connection")){
    db = QSqlDatabase::database("qt_sql_default_connection");
}else{
    db = QSqlDatabase::addDatabase("QSQLITE");
}
db.setDatabaseName(QCoreApplication::applicationDirPath()+"/SQLite/sql.db");
QSqlQuery sql_query;
if(!db.open()){
    qDebug()<<"Error:Failed to connect database." << db.lastError();
}
sql_query.exec("SELECT * FROM tablename where name = AMY;");
db.close();

遇到问题: 打包后生成的exe文件在别人电脑上无法运行,查阅网上资料需要拷贝sqlite运行文件,如下图所示:

image.png

和QT sqlite驱动文件 sqldrivers,如下图所示:

image.png

但是拷贝后,仍然无法正常运行,调查后发现,本地运行时,使用的时QT的安装环境,而打包后的文件若要使用如下图所示的几个sql库,需要单独引入Qt5Sql.dll文件,否则无法正常运行程序,因此在本地拷贝Qt5Sql.dll文件到程序运行目录后,程序可以正常运行。

image.png