• 7284阅读
  • 7回复

[提问]qt程序发布出现的程序崩溃问题 [复制链接]

上一主题 下一主题
离线wayne
 

只看楼主 正序阅读 楼主  发表于: 2013-11-23
我用 Qt-4.8.5 和 MinGW4.4.0 编译的一个程序, 发布的时候带上了所有依赖的dll库,发现 程序直接崩溃了(xxx.exe已停止工作)



而在开发环境里,程序运行的非常稳定,正常.

该怎么办呢, help....




离线XChinux

只看该作者 7楼 发表于: 2014-01-05
plugins目录下的东西你没带吧?插件是无法用dependency walker找出来的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wayne

只看该作者 6楼 发表于: 2013-11-29
回 5楼(roywillow) 的帖子
其实最难的地方 就是 根据dependency walker 的红色信息  推测出 所缺的是哪种dll.

而我是用最笨的方法, 一次又一次的重命名 Qt的安装目录的某个目录 排查出来的.
离线roywillow

只看该作者 5楼 发表于: 2013-11-29
回 4楼(wayne) 的帖子
因为Qt搜索插件的时候是直接遍历文件夹中的所有dll,然后从dll的具体内容来确定它是什么插件,所以与文件名无关
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wayne

只看该作者 4楼 发表于: 2013-11-29
回 3楼(roywillow) 的帖子
是的 ,后来我也发现了.
而且还发现,把qcncodecs4.dll 文件名 更改成3.dll,甚至 ...dll,  程序 仍然能正常运行.
但QtCore4.dll 就不能这么做.
离线roywillow

只看该作者 3楼 发表于: 2013-11-27
如果不做修改,插件不应该是放在plugins文件夹中的
lz这种情况,应该把codecs文件夹直接放在exe的同目录中,然后里面放qcncodecs4.dll
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wayne

只看该作者 2楼 发表于: 2013-11-23
我擦. 折腾了一整个下午!
发布的时候, 插件里的dll 不能简单的直接拷贝到exe所在目录!

由于我的程序里面有一段代码 将windows下某进程的GBK编码的输出 转化成utf8 , 即调用了Qt插件里的C:\Qt\4.8.5\plugins\codecs\qcncodecs4.dll


解决办法就是 多写一段代码, 给运行时的程序添加一个相对路径的plugins目录.
    a.addLibraryPath("./plugins");

离线wayne

只看该作者 1楼 发表于: 2013-11-23
用 dependency walker 发现,缺这些文件,貌似都是些系统文件??


快速回复
限100 字节
 
上一个 下一个