Qter 发表于 2018-4-17 14:31:35

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:37:57

本帖最后由 Qter 于 2018-4-18 09:47 编辑

下载depends工具查看依赖项
http://www.dependencywalker.com/


页: [1]
查看完整版本: Qt程序发布后还没出现界面前就退出了