• 6393阅读
  • 10回复

[提问]release版本不能运行 [复制链接]

上一主题 下一主题
离线foxgod
 

只看楼主 倒序阅读 楼主  发表于: 2011-12-07
我在QT下编译release版本,DLL都加上了,也可以运行了,功能也正确了,可是在没有安装QT的机子上,release版本就不能用了,可以打开,不能使用他,不知道是怎么回事,打开后窗口标题还变成了乱码。在这里我用了QJSON的DLL。请教下,这里我把release版本上传给大家,大家帮忙看看是怎么回事,谢谢了! release.rar (5253 K) 下载次数:12

离线jdwx

只看该作者 1楼 发表于: 2011-12-07
回 楼主(foxgod) 的帖子
如果是windows系统,建议下一个depends.exe 查看一下到底用到了哪些个dll。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dbzhang800

只看该作者 2楼 发表于: 2011-12-07
Re:回 楼主(foxgod) 的帖子
引用第1楼jdwx于2011-12-07 19:06发表的 回 楼主(foxgod) 的帖子 :
如果是windows系统,建议下一个depends.exe 查看一下到底用到了哪些个dll。

用depends.exe 对这种插件问题没用。看Manual对他有用
或者可以看看:
http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html
离线foxgod

只看该作者 3楼 发表于: 2011-12-08
回 1楼(jdwx) 的帖子
使用了depend.exe所有的DLL都打上了,没有问题,在没安装QT的机子上,exe文件打开窗口标题就乱码!
离线foxgod

只看该作者 4楼 发表于: 2011-12-08
回 2楼(dbzhang800) 的帖子
我就是按照这个做的,但是问题没解决!!
离线dbzhang800

只看该作者 5楼 发表于: 2011-12-08
Re:回 2楼(dbzhang800) 的帖子
引用第4楼foxgod于2011-12-08 11:36发表的 回 2楼(dbzhang800) 的帖子 :
我就是按照这个做的,但是问题没解决!!

不妨先说你怎么做的,比如,
用的什么编码,
怎么发布的插件(放置到那个文件夹下,有没有误动其他配置,比如不少人会碰qt.conf等)
有没有 使用 process explorer 或其他工具去查看程序运行时插件有没有正确加载


离线foxgod

只看该作者 6楼 发表于: 2011-12-08
回 5楼(dbzhang800) 的帖子
我写好程序后,就在QT creator里选择release,然后编译,编译好了以后把需要用到的DLL都从QT里面复制到我这个release文件里面,中间没有用到qt.conf,我用到了HTTP,得到JSON文件,使用QJSON解析,我的那个release版本我以附件的形式发布出来了,大家帮我看看呀!
离线dbzhang800

只看该作者 7楼 发表于: 2011-12-08
Re:回 5楼(dbzhang800) 的帖子
引用第6楼foxgod于2011-12-08 16:46发表的 回 5楼(dbzhang800) 的帖子 :
我写好程序后,就在QT creator里选择release,然后编译,编译好了以后把需要用到的DLL都从QT里面复制到我这个release文件里面,中间没有用到qt.conf,我用到了HTTP,得到JSON文件,使用QJSON解析,我的那个release版本我以附件的形式发布出来了,大家帮我看看呀!


好了,看完了,你现在可以解释你这个吧?

我就是按照这个做的,但是问题没解决!!

或者具体一点,回答我前面提到的具体问题:

不妨先说你怎么做的,比如,
用的什么编码,
怎么发布的插件(放置到那个文件夹下,有没有误动其他配置,比如不少人会碰qt.conf等)
有没有 使用 process explorer 或其他工具去查看程序运行时插件有没有正确加载


离线foxgod

只看该作者 8楼 发表于: 2011-12-09
回 7楼(dbzhang800) 的帖子
经测试,我的release版本下载下来了json文件,但是json的DLL却没有解析出来,我在想DLL是不是又问题。
我是这样做的:::::::
首先,我们需要生成 release 模式的可执行程序(不少同学抱怨,一个小小程序却需要100多M的动态库,就是因为用的debug)

qmakemingw32-make release
而后将 可执行文件 与 需要的动态库放到同一个文件夹下,一般需要

myprogram.exe
mingwm10.dll
libgcc_s_dw2-1.dll
qtcore4.dll
qtgui4.dll
有同学抱怨,动态库拷过去以后,程序报错 无法定位程序输入点于动态链接库QtCore4.dll上 ,这一般是由于系统中装了多套Qt的运行库,而你拷贝的不是Qt安装目录下的库所导致的。比如,当安装的是Qt SDK时,很容易导致这个问题,因为里面的Qt是mingw编译的,但里面的QtCreator是msvc编译的,所以不少人不小心就吧QtCreator带的Qt运行库拷过来了。

如果你不需要其他的插件,那么就可以发布程序了,然而不少同学抱怨 jpg、gif、bmp 等格式的图片无法显示,这是因为 Qt 原生支持 png,而其他格式需要通过插件支持(插件在 %QTDIR%/plugins\imageformats 目录下)

你只需将需要的插件拷贝到可执行程序所在的目录下的 imageformats 目录下即可

myprogram.exe
imageformats\qjpeg4.dll
imageformats\qgif4.dll
...
同样,如果你的程序需要gb2312、gbk编码支持,那么需要将 %QTDIR%\plugins\codecs 目录下的相应插件拷贝到可执行程序所在目录下的 codecs 目录下

myprogram.exe
codecs\qcncodecs4.dll
...
建议:不妨多看看Qt安装目录下的plugins目录,熟悉这些插件分别是做什么的,你发布的程序需要哪些。

现在,程序可以发布了。你现在也可以通过 nsis 来制作一个安装包(NSIS学习笔记(以Qt4程序打包为例))。

离线foxgod

只看该作者 9楼 发表于: 2011-12-09
回 7楼(dbzhang800) 的帖子
使用depend。exe查看所有的DLL都已经打上了。使用process explorer,查看有些插件没拷贝,我拷贝后,还是不能用。
离线foxgod

只看该作者 10楼 发表于: 2011-12-22
release 版本不能运行原因,经过silentpebble指导,原来是phonon的插件的DLL没加入,现在OK了,多谢silentpebble
快速回复
限100 字节
 
上一个 下一个