原文请看:http://www.cnblogs.com/DrizzleX/articles/2475044.html

本文研究这样一个问题:使用QT SDK和VS2008开发了一个程序,将这个程序放到另一台“干净”的主机上,如何保证程序正确运行。

本文也适用于QT与VS05/VS03/MINGW等配合开发的情形,举一反三的事情请读者自己去做。

1.QT根目录“bin”文件夹下的相应*.dll文件是需要拷贝到程序所在的目录下的。一般地,QtCore4.dll和QtGui4.dll是必备的,同时根据情况需要,可能需要拷贝更多的DLL到程序所在的目录下。具体拷贝那些文件可以采用:

1>尝试法,在测试的主机上(或去除了QT环境变量的本主机),尝试运行程序,会出现提醒“缺少**.dll文件”,如此迭代,可以逐渐将所需DLL补全

2>查看法,使用dependency walker,查看*.exe文件依赖的所有DLL文件,拷贝之

2.需要将VS2008对应的运行时库拷贝到程序所在的目录。运行时库在VS安装目录下,如“C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT”,将该完整的文件夹“Microsoft.VC90.CRT”拷贝到程序所 在的目录。

3.最后,却非常重要的是,如果程序使用了QT插件,如:文字编码、图像读写(PNG/BMP不需要)、粒子系统等,则需要将插件也拷贝到程序所在目录。举例如下:

>>程序使用了中文编码,则需要“QTDIR/plugins/codecs/qcncodecs4.dll”文件,将"codecs/qcncodecs4.dll"(没有plugins)保持目录结构

>>拷贝到程序所在的目录下,然后将之前的“Microsoft.VC90.CRT”文件夹拷贝到“codecs/”文件夹下,这一点非常重要,

>>每多使用一类插件,就需要在相应的叶子文件夹下添加“Microsoft.VC90.CRT”,如假若又使用了图像读写,则需要

>>拷贝“QTDIR/plugins/imageformats”到程序所在目录的“imageformats/”下,并在“imageformats/”下添加“Microsoft.VC90.CRT”

一个示例目录如下:

===============================================

demo.exe

- Microsoft.VC90.CRT/

Microsoft.VC90.CRT.manifest

msvcm90.dll

msvcp90.dll

msvcr90.dll

-codecs

+Microsoft.VC90.CRT/

qcncodecs4.dll

-imageformats

+Microsoft.VC90.CRT/

qgif4.dll

qico4.dll

qjpeg4.dll

qmng4.dll

qsvg4.dll

qtiff4.dll

-Qt

-labs

-particles

qmlparticlesplugin.dll

+Microsoft.VC90.CRT/

QtCore4.dll

QtGui4.dll

QtScript4.dll

QtNetwork4.dll

QtDeclarative4.dll

===================================================

可以考虑使用QApplication::AddLibraryPath()方法添加DLL的加载路径,从而使发布的程序的链接库安排更加合理,

但这已经无关紧要了,是锦上添花的事情。

干净地发布QT程序的更多相关文章

  1. [置顶] Linux下发布QT程序

    Linux下发布QT程序 概述 无论在windows下还是在linux下,可执行程序的运行都依赖于相关的运行库,我们需要将依赖的库找到放到特定的位置,让可执行文件能够找到.在不知道可执行文件依赖哪些库 ...

  2. 关于在windows下部署发布QT程序的总结

    原文请看:http://www.cnblogs.com/javaexam2/archive/2011/05/18/2632916.html 关于在windows下部署发布QT程序的总结 2008-06 ...

  3. 在Linux下使用linuxdeployqt发布Qt程序

    一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...

  4. 3分钟教会你如何发布Qt程序

    导读:Qt程序编写好以后该如何发布.本文教你使用Qt自带工具windeployqt来进行操作. 本文字数:500,阅读时长大约:3分钟 (1)编写一个简单的程序 我们先做一个简单的窗口,添加一个图片资 ...

  5. Linux下如何发布Qt程序

    在X11平台下qt程序,首先准备好程序中需要使用的资源,库和插件...    比如你的可运行程序取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(链接 ...

  6. Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)

    转自:http://www.stardrad.com/blog/qt-5%E7%A8%8B%E5%BA%8F%E5%9C%A8windows%E4%B8%8A%E7%9A%84%E5%8F%91%E5 ...

  7. QT程序在windows下部署发布

    转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及q ...

  8. VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0 ...

  9. 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

    最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...

随机推荐

  1. 手脱ASProtect v1.2(无Stolen Code)

    1.载入PEID ASProtect v1.2 2.载入OD > 01C04200 push 跑跑赛道.0042C001 ; //入口处 C3 retn AA stos byte ptr es: ...

  2. 手脱ACProtect V2.0(无Stolen Code)

    1.载入PEID ACProtect V2.0 -> risco 2.载入OD > 00A04000 push ACP_Feed.0040A000 ; //入口点 0B104000 pus ...

  3. hbase的Region分裂代码分析

    region分裂有2种触发情景:1是用户手动触发(参见HRegionServer的splitRegion方法),2是后台flush线程flush完一个region的memstore时,会去检查这个re ...

  4. redis安装----非基于lnmp安装

    在 Ubuntu 系统安装 Redi 可以使用以下命令: $sudo apt-get update $sudo apt-get install redis-server 启动 Redis $ redi ...

  5. [技巧篇]11.JavaScript原生态如何获取浏览器请求地址中的参数

    var getAccessParams = function(){ var i,ilen,strs,keyName,keyValue, params={}, path = window.locatio ...

  6. 消除float浮动的影响

    一. 在父元素中当前浮动元素下面添加一个空的div 添加clear属性 <div style="displya:none;clear: left;"></div& ...

  7. springboot线程池@Async的使用和扩展

    我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务: 本 ...

  8. 2015/8/9 到家了,学完了CodeCademy的Python

    昨天坐了20多个小时的硬座回家.发现在网络信号差的火车上也是学习的好地方.如果你的手机电量不足的话,带上两本书简直是绝配.我在火车上阅读了两百多页的内容,并没有多大的疲累,那样无聊的环境里面能看书学习 ...

  9. Ubuntu12.04 GIT安装和使用

    一.安装GIT和配置GIT 1.安装GIT apt-get install git 2.配置GIT ##配置用户信息 git config --global user.name "John ...

  10. Linux系统网络基础知识及配置

    一:DNS(domain name system)简介 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而 ...