qt+vs2008发布到没环境的电脑下运行报错

vs2008+qt编译后的程序,并带上qt的相关dll.放到没环境下的电脑上,大部分可以正常运行.但小部分还是不行.
打开程序直接报错.这时还需要带上vc的运行库.注意qt4.8.6对应的vc运行库vs2008,不要sp1的.

下面是转载的原文:

本文研究这样一个问题:使用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”

 

转自 http://www.pailm.com

 

posted @ 2015-02-12 10:50  2524187945  阅读(864)  评论(0编辑  收藏  举报