解决Qt5.9.5下Release程序报错QSqlDataBase:QSQLite driver not loaded

写了一个小程序给同事用,在Debug模式下运行都正常,只要Release运行就报错QSqlDataBase:QSQLite driver not loaded。采用windeployqt打包整个程序后也是报这个错。百思不得其解。

以下是采用windeployqt打包后的目录,sqldrivers(也就是依赖的sql动态库)直接被生成到程序目录下。

上网查找解决方案,给出的回答都是:把依赖的动态库放到程序目录下。

尝试把sqldrivers下的全部动态库直接拷贝到程序目录下,也还是不行。

突然看到网上一位博主贴出的输出程序依赖动态库路径的方法:

QDir pluginsDir(QLibraryInfo::location(QLibraryInfo::PluginsPath));    
QString path = pluginsDir.absolutePath();    
qDebug("Plugins path : %s", qPrintable(path));

于是在程序中添加语句尝试输出。

艾玛,这一输出才发现:动态库的依赖路径是plugins文件夹,于是我把所有的依赖动态库全部放到plugins文件夹下,结果竟然又失败了。。灵机一动,我把sqldrivers整个文件夹放到plugins文件夹下,结果成功了。。(神坑啊!!windeployqt并没有直接打包生成到正确的路径下)

本文到这里就该结束了。

但是,当博主将plugins-sqldrivers文件夹放到Release目录下,回到Qtcreator试图运行Release程序的时候,又再次报错了,不过这次直接能看到依赖的动态库目录。

原来Release程序在生成目录直接打开,依赖的动态库路径和从Qtcreator打开并不一样!!!

如图,从Release目录直接打开是依赖Release/Plugins,而从Qtcreator直接运行Release程序,是依赖的工程目录下的Plugins!!!

将plugins-sqldrivers文件夹放到工程目录下,就成功了!

折腾了两天啊,祝各位避坑

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值