Qt程序发布后还没出现界面前就退出了
本帖最后由 Qter 于 2018-4-19 18:18 编辑windows下Qt程序发布
windeployqt.exe 处理后的文件确认是基于哪个平台的
C:\Qt\Qt5.5.1\msvc2013_64\5.5\msvc2013_64\bin对应 C:\Qt\Qt5.5.1\msvc2013_64\Tools\QtCreator\bin\qtcreator.exe
C:\Qt\Qt5.5.1\mingw492\5.5\mingw492_32\bin 对应 C:\Qt\Qt5.5.1\mingw492\Tools\QtCreator\bin\qtcreator.exe
相应的库都要拷贝 前者路径下的
按上面方法 仍旧有问题错误应用程序名称: Doraemon.exe,版本: 0.0.0.0,时间戳: 0x5ad5f466
错误模块名称: QDatabaseSo.dll,版本: 0.0.0.0,时间戳: 0x5ad5f443
异常代码: 0xc0000005
错误偏移量: 0x000000000000a5c3
错误进程 ID: 0x1460
错误应用程序启动时间: 0x01d3d6b3f8f2b0ec
错误应用程序路径: C:\Users\hcj_vbox\MSVC2013_64bit-Release\Doraemon.exe
错误模块路径: C:\Users\hcj_vbox\MSVC2013_64bit-Release\QDatabaseSo.dll
报告 ID: a05ee7bc-3570-4cf6-8050-4428453c84ab
错误程序包全名:
错误程序包相对应用程序 ID: - System
- Provider
[ Name]Application Error
- EventID 1000
[ Qualifiers]0
Level 2
Task 100
Keywords 0x80000000000000
- TimeCreated
[ SystemTime]2018-04-18T01:24:19.000000000Z
EventRecordID 6774
Channel Application
Computer DESKTOP-D1G5G
Security
- EventData
Doraemon.exe
0.0.0.0
5ad5f466
QDatabaseSo.dll
0.0.0.0
5ad5f443
c0000005
000000000000a5c3
1460
01d3d6b3f8f2b0ec
C:\Users\hcj_vbox\MSVC2013_64bit-Release\Doraemon.exe
C:\Users\hcj_vbox\MSVC2013_64bit-Release\QDatabaseSo.dll
a05ee7bc-3570-4cf6-8050-4428453c84ab
发现替换一下Qt5Core.dll就能用了
只需右键主程序,选择 属性
点击 兼容性标签
勾选 以兼容模式运行这个程序,并尝试选择合适的版本----这种方法也不行
问题终于找到了:(Driver not loaded)
项目中用到sqlite,由于没有拷贝\sqldrivers\qsqlite.dll 到发布包中,所以数据库初始化时出错,程序就默认返回退出了。
关键是qt缺少这个dll,并不弹出容器提示,也不抛出异常,还是通过 database.lastError().text() 发现的。
而上面为什么替换Qt5Core.dll就能解决问题呢?
因为这个动态库中,有你本地安装的Qt运行环境的目录信息,通过它能找到这个dll,所以就不报错了,换了其它电脑上的Qt5Core.dll,由于Qt安装目录不同的,就又会报错
本帖最后由 Qter 于 2018-4-18 09:47 编辑
下载depends工具查看依赖项
http://www.dependencywalker.com/
页:
[1]