|
本帖最后由 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安装目录不同的,就又会报错
|
|