原文请看: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. Python爬虫学习笔记之极限滑动验证码的识别

    代码: import time from io import BytesIO from PIL import Image from selenium import webdriver from sel ...

  2. cookie与session的区别与应用

    通常我们所说的浏览器自动保存密码,下次不用登陆,提示一次就不再出现的内容,大部分通过cookie或者session来实现的. cookie的概念 cookie是浏览器(User Agent)访问一些网 ...

  3. 【bzoj3362-导航难题】带权并查集

    题意: 约翰所在的乡村可以看做一个二维平面,其中有N 座牧场,每座牧场都有自己的坐标,编号为1到N.牧场间存在一些道路,每条道路道路连接两个不同的牧场,方向必定平行于X 轴或Y轴.连通两座牧场之间的路 ...

  4. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    [算法]模拟 #include<cstdio> #include<algorithm> using namespace std; ,maxm=; int a[maxn],A[m ...

  5. 【HNOI】矩阵染色 数论

    [题目描述]一个2*i的矩阵,一共有m种颜色,相邻两个格子颜色不能相同,m种颜色不必都用上,f[i]表示这个答案,求Σf[i]*(2*i)^m (1<=i<=n)%p. [数据范围] 20 ...

  6. redis基础之开机自启动和监听(二)

    redis安装好后,每次手动启动很不方便,配置开机自启动. 方法一:设置启动命令到/etc/rc.d/rc.local rc.local文件是系统全局脚本文件,会在其他开机进程脚本文件执行完毕后执行该 ...

  7. Django【设计】settings方案

      配置文件: 目标:配置文件,默认配置和手动配置分开,参考django的配置文件方案,默认配置文件放在内部,只让用户做常用配置   /bin/settings.py(手动配置) PLUGIN_ITE ...

  8. vue-实现倒计时功能

    JavaScript 创建一个 countdown 方法,用于计算并在控制台打印距目标时间的日.时.分.秒数,每隔一秒递归执行一次. msec 是当前时间距目标时间的毫秒数,由时间戳相减得到,我们将以 ...

  9. Optimizing subroutine calls based on architecture level of called subroutine

    A technique is provided for generating stubs. A processing circuit receives a call to a called funct ...

  10. sql server查看创建表的代码,表定义

    1.查看建表语句在“对象资源管理器”中找到要导出的表,选中该表并单击右键,“编写表脚本为(S)”/“CREATE到(C)”/“新查询编辑器窗口”即可查看该表的建表语句.2.导出建表语句在“对象资源管理 ...