Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2071|回复: 1
打印 上一主题 下一主题

Qt程序发布后还没出现界面前就退出了

[复制链接]

1228

主题

1997

帖子

7586

积分

认证用户组

Rank: 5Rank: 5

积分
7586
跳转到指定楼层
楼主
发表于 2018-4-17 14:31:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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

相应的库都要拷贝 前者路径下的

按上面方法 仍旧有问题
  1. 错误应用程序名称: Doraemon.exe,版本: 0.0.0.0,时间戳: 0x5ad5f466
  2. 错误模块名称: QDatabaseSo.dll,版本: 0.0.0.0,时间戳: 0x5ad5f443
  3. 异常代码: 0xc0000005
  4. 错误偏移量: 0x000000000000a5c3
  5. 错误进程 ID: 0x1460
  6. 错误应用程序启动时间: 0x01d3d6b3f8f2b0ec
  7. 错误应用程序路径: C:\Users\hcj_vbox\MSVC2013_64bit-Release\Doraemon.exe
  8. 错误模块路径: C:\Users\hcj_vbox\MSVC2013_64bit-Release\QDatabaseSo.dll
  9. 报告 ID: a05ee7bc-3570-4cf6-8050-4428453c84ab
  10. 错误程序包全名:
  11. 错误程序包相对应用程序 ID:
复制代码
  1. - System

  2.   - Provider

  3.    [ Name]  Application Error

  4.   - EventID 1000

  5.    [ Qualifiers]  0

  6.    Level 2

  7.    Task 100

  8.    Keywords 0x80000000000000

  9.   - TimeCreated

  10.    [ SystemTime]  2018-04-18T01:24:19.000000000Z

  11.    EventRecordID 6774

  12.    Channel Application

  13.    Computer DESKTOP-D1G5G

  14.    Security


  15. - EventData

  16.    Doraemon.exe
  17.    0.0.0.0
  18.    5ad5f466
  19.    QDatabaseSo.dll
  20.    0.0.0.0
  21.    5ad5f443
  22.    c0000005
  23.    000000000000a5c3
  24.    1460
  25.    01d3d6b3f8f2b0ec
  26.    C:\Users\hcj_vbox\MSVC2013_64bit-Release\Doraemon.exe
  27.    C:\Users\hcj_vbox\MSVC2013_64bit-Release\QDatabaseSo.dll
  28.    a05ee7bc-3570-4cf6-8050-4428453c84ab
  29.    
  30.    
复制代码
发现替换一下Qt5Core.dll就能用了


只需右键主程序,选择 属性
点击 兼容性标签
勾选   以兼容模式运行这个程序,并尝试选择合适的版本  ----这种方法也不行

问题终于找到了:(Driver not loaded)
项目中用到sqlite,由于没有拷贝\sqldrivers\qsqlite.dll 到发布包中,所以数据库初始化时出错,程序就默认返回退出了。
关键是qt缺少这个dll,并不弹出容器提示,也不抛出异常,还是通过 database.lastError().text()  发现的。
而上面为什么替换Qt5Core.dll就能解决问题呢? 
因为这个动态库中,有你本地安装的Qt运行环境的目录信息,通过它能找到这个dll,所以就不报错了,换了其它电脑上的Qt5Core.dll,由于Qt安装目录不同的,就又会报错
回复

使用道具 举报

1228

主题

1997

帖子

7586

积分

认证用户组

Rank: 5Rank: 5

积分
7586
沙发
 楼主| 发表于 2018-4-18 09:37:57 | 只看该作者
本帖最后由 Qter 于 2018-4-18 09:47 编辑

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


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-8 23:36 , Processed in 0.067435 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表