- 浏览: 16718 次
最新评论
Qt 程序在 windows 下的发布
2011年06月08日
Qt 程序在 windows 下的发布
2011-05-09 19:09
转载自 dbzhang800
最终编辑 dbzhang800
这个问题,其实 Qt 的 manual 中解释的已经比较清楚了。下面是我根据自己的理解和实验后写的东西,希望比Qt文档容易理解一点。
另外:你可能对 Qt 插件学习(一) 感兴趣。
下面不涉及静态编译(静态编译可以看看这儿),只包含动态编译(也就是Qt默认的情况),主要又分 mingw 和 msvc 两种情况:
Mingw首先,我们需要生成 release 模式的可执行程序(不少同学抱怨,一个小小程序却需要100多M的动态库,就是因为用的debug)
qmake
mingw32-make release
而后将 可执行文件 与 需要的动态库放到同一个文件夹下,一般需要
myprogram.exemingwm10.dlllibgcc_s_dw2-1.dllqtcore4.dllqtgui4.dll有同学抱怨,动态库拷过去以后,程序报错 无法定位程序输入点于动态链接库QtCore4.dll上 ,这一般是由于系统中装了多套Qt的运行库,而你拷贝的不是Qt安装目录下的库所导致的。比如,当安装的是Qt SDK时,很容易导致这个问题,因为里面的Qt是mingw编译的,但里面的QtCreator是msvc编译的,所以不少人不小心就吧 QtCreator带的Qt运行库拷过来了。
如果你不需要其他的插件,那么就可以发布程序了,然而不少同学抱怨 jpg、gif、bmp 等格式的图片无法显示,这是因为 Qt 原生支持 png,而其他格式需要通过插件支持(插件在 %QTDIR%/plugins\imageformats 目录下)
你只需将需要的插件拷贝到可执行程序所在的目录下的 imageformats 目录下即可
myprogram.exeimageformats\qjpeg4.dllimageformats\qgif4.dll...同样,如果你的程序需要gb2312、gbk编码支持,那么需要将 %QTDIR%\plugins\codecs 目录下的相应插件拷贝到可执行程序所在目录下的 codecs 目录下
myprogram.execodecs\qcncodecs4.dll...建议:不妨多看看Qt安装目录下的plugins目录,熟悉这些插件分别是做什么的,你发布的程序需要哪些。
现在,程序可以发布了。你现在也可以通过 nsis 来制作一个安装包。
msvc如果用的VS2008 而不是mingw,发布的过程其实基本是一样的。
首先生成 release 模式的 可执行文件
qmake
nmake release
而后准备需要的动态库与插件
myprogram.exeqtcore4.dllqtgui4.dllimageformats\*4.dll...因为是vc编译的,所以不需要mingw的 mingwm10.dll libgcc_s_dw2-1.dll ,取代他们的是VC2008的C\C++ 运行库:
MSVCR90.DLLMSVCP90.DLL如果你用的Windows xp 之前的系统,那么只要将这两个运行库和可执行程序放于同一个目录即可。
但对于Windows xp (包括)之后的系统,这样做并不会正常工作,程序会报告:由于应用程序配置不正确,应用程序未能启动。这个问题有点复杂,其实解决方法很简单,只需在用户机器上安装1M多的VS2008可再发行包 vcredist_x86.exe 即可
该包会将运行库安装到 window系统目录下的 WinSxS 目录下,对xp之前的系统,还会将运行库同时安装到path路径下的目录内。其实如果用户装过其他人编写的VC2008的程序,机器上很应该已经装过该包了。
或许你要问,如果不想安装 可再发行包怎么办,比如就想把需要dll一块和程序打包,我们可以这么做:
将文件夹 (如果你用的VS2008 express,该文件夹不存在)
\VC\redist\\Microsoft.VC90.CRT
直接复制到可执行程序所在目录
myprogram.exeMicrosoft.VC90.CRT\*注意:
如果用户机器上已经安装了可再发行包,程序将永远不会使用Microsoft.VC90.CRT下的库。当采用这种方法时,如果同时发布插件(包括图片插件等),那么插件编译时必须:
CONFIG-=embed_manifest_dll
使得生成的插件中不嵌入manifest文件,否则插件不被程序识别(其实也可以识别,只要将 Microsoft.VC90.CRT 拷贝一份和插件放到同一文件夹即可,当然这种方式很不好,如果插件分布在几个目录下,要放置Microsoft.VC90.CRT的很多副本)。
工具1. 一定要记住: Dependency Walker 是你的好帮手,它会告诉你你的 exe 和 dll需要哪些库,以及它加载的动态库都在哪个文件夹内 等
2. 最好准备一个进程查看的工具,比如微软的 Process Explorer等,来查看你的程序到底加载了哪些动态库(加载了哪些插件等)
发表评论
-
Android的电话功能介绍
2012-01-20 10:25 610Android的电话功能介绍 2 ... -
Muduo 设计与实现之一:Buffer 类的设计
2012-01-20 10:25 907Muduo 设计与实现之一:Buf ... -
Java性能调优方法:基于等待的调优
2012-01-20 10:25 583Java性能调优方法:基于等待的调优 2011年05月31日 ... -
长连接,短连接,同步,异步
2012-01-20 10:25 633长连接,短连接,同步,异 ... -
D-Bus介绍
2012-01-20 10:25 1012D-Bus介绍 2011年01月19日 ... -
网络和黑客windows编程
2012-01-19 15:26 655网络和黑客windows编程 2011年04月18日 第 ... -
Windows XP的小秘密 {7}
2012-01-19 15:26 536Windows XP的小秘密 {7} 201 ... -
转: Boost下载安装编译配置使用指南(含Windows和Linux)
2012-01-19 15:26 582转: Boost下载安装编译配 ... -
从32位应用程序到64位应用程序
2012-01-19 15:26 2633从32位应用程序到64位应 ... -
通过QQ旋风离线下载Android SDK,速度超快
2012-01-19 15:26 1740通过QQ旋风离线下载Android SDK,速度超快 201 ... -
我的日志
2012-01-17 05:13 754我的日志 7小时前 刘一平心想aU诺洗,始榷ム你 ... -
大肚婆
2012-01-17 05:13 761大肚婆 7小时前 我的宝宝还有三个月就要出生了,现在的每 ... -
我的日志
2012-01-17 05:13 593我的日志 7小时前 薛知蝶被他的态度给气炸了Fj ... -
VC编译器配置及编译选项
2012-01-17 05:12 693VC编译器配置及编译选 ... -
window系统下的远程堆栈溢出 --《原理篇》
2012-01-17 05:12 789window系统下的远程堆栈溢出 --《原理篇》 2011年 ... -
VC++和MATLAB
2012-01-16 04:04 690VC++和MATLAB 2009年08月25日 摘 要 ... -
如何制作库1
2012-01-16 04:04 612如何制作库1 2010年01月20日 ads做库: ... -
如何制作库2
2012-01-16 04:04 582如何制作库2 2010年01月20日 下面通过例子介绍如 ... -
各种文件后缀名与打开方式大全a-d
2012-01-16 04:04 612各种文件后缀名与打开方式大全a-d 2012年01月11日 ...
相关推荐
Qt 程序在 windows 下的发布.pdfQt 程序在 windows 下的发布.pdf
Qt 程序在 windows 下的发布.docxQt 程序在 windows 下的发布.docx
Qt程序在windows下的发布流程
QtCreater工具Linux开发的程序发布相比于Windows下发布较麻烦,该手册经过实践的证明,供大家参考。
windows 系统下的QT程序打包与发布
Windows如何打包Qt程序 其中含有Windows下开发的Qt程序如何打包发布的步骤,以及其中需要用到的工具。
基于Qt installer framework封装的应用程序打包工具 1、支持发布程序目录打包。 2、支持发布程序单exe打包,可以自动拷贝依赖库。此方法目前仅限制于Qt编译的应用程序。
简介2.windows下的打包1)发布环境2)方法一 — release版本发布a) release要发布程序b) 通过`windeployqt`打包3)方法二 — 发布成独立的可执行exe文件a) 下载工具b) 打包4)方法三 — 打包成安装包发布a)通过...
Windows Qt程序打包发布软件 NSIS VNISEdit + 使用文档
mingwm10.dll QtCored4.dll QtGuid4.dll 用于Qt程序在windows下的发布和运行
在发布 Qt 4.6 的同时,作为 Qt 开发跨平台 IDE 的Qt Creator也发布了更新版本。Qt Creator 1.3 和 Qt 4.6共同构成的 Qt SDK,包含了开发跨平台应用程序所需的全部功能。 Qt Creator是一个用于Qt开发的轻量级跨平台...
本串口助手在windows平台上使用QT Creator开发,使用QT5.61,串口助手功能仿真正点原子串口助手XCOM_V2.0,功能丰富,文件中不仅有源代码,还有发布的动态库程序,以及打包的程序,可以在不安装QT便可运行,作为学习QT...
windows上运行Qt程序所需的dll文件 注意在发布模式下有效
Windows下的QT动态编译程序打包发布教程,超详细。
在Qt Creator 的安装目录的qt 文件下的bin 文件夹下(我安装在了D 盘, 所以路径是D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll 文件。在这里 找到mingwm10.dll 文件,将其复制到C:\WINDOWS\system 文件夹下,...
资源包括写好打包的程序,以及提供学习的windows获取cpu以及内存占用的部分源码:).
您可以在自己喜欢的桌面平台(如Windows、Linux和macOS)上使用Qt Creator,并使用相同的代码库或稍加修改,创建流畅、现代、触摸友好的图形用户界面(GUI)和桌面、移动或嵌入式应用程序。您可以轻松地修改代码并将其...
QT串口模块qextserialport-1.2rc最新正式发布版(支持QT4,兼容Windows/Linux跨平台开发).zip,比常见的qextserialport-1.2win-alpha版本更高、更稳定,功能更丰富,支持COM口搜索枚举。
这种跨平台功能为开发者提供了极大的便Qt最早是由挪威的Haavard Nord和Eirik Chambe-Eng在1991年开始开发的,在1994年发布,并成立了一家名为Trolltech的公司。Trolltech公司在2008年被诺基亚公司收购。2012年,Qt被...
跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了...