【原】Window下发布Qt程序

   在Windows下使用Qt Creator编写、测试并完善程序后,就涉及到发布程序的问题了。下面将我在发布Qt程序时遇到的一些问题进行一下总结。
    一、manifest的问题。
    如果是使用VC2008版本的Qt库来开发程序,则将程序发布到别的机器上运行时,会弹框提示应用程序配置不正确。程序发布时,已经将依赖的动态链接库如msvcp90d.dll、msvcr90d.dll和Microsoft.VC90.DebugCRT.manifest都带上了,应当是manifest中提示的运行时库版本和实际提供的运行时库版本不一致导致的。
    尝试在程序的pro文件中添加了如下宏定义:
    DEFINES += _BIND_TO_CURRENT_VCLIBS_VERSION=1 _BIND_TO_CURRENT_CRT_VERSION=1
    这两个宏能够让程序使用正确的运行时库版本。重新编译程序后,拷贝到别的机器上运行,依然弹框提示应用程序配置不正确。问题究竟出在哪儿呢?
    应当是Qt自带的库,如QtCored4.dll等,在编译时没有指定上述两个宏,导致其依赖的运行时库版本和实际提供的不一致。所以,我们需要重新编译下Qt库。打开mkspecs目录,进入win32-msvc2008目录,用文本编辑器打开qmake.conf文件,在DEFINES那一行最后面加上如下宏定义(注意:与前面的宏定义之间留一个空格):
    _BIND_TO_CURRENT_VCLIBS_VERSION=1 _BIND_TO_CURRENT_CRT_VERSION=1
    重新编译Qt库,然后使用新的库编译发布我们的程序,运行正常!
    二、中文乱码的问题。
    设置字符编码后,在本机中文能够正常显示,但拷贝到别的机器后,中文却显示为乱码。本机与其他机器的最大区别就是本机安装了Qt的开发环境,而其他机器则没有。所以,应当是由于显示中文还需要依赖一些中文字符的编解码库导致的。
    进入Qt安装目录的plugins子目录,将codecs目录整个拷贝到程序目录下,再次运行程序,中文显示正常!
    拷贝codecs目录时,有以下几点需要特别注意:
    1、codecs目录必须放到程序exe所在目录下,不能放到别的目录下。
    2、codecs目录不能改名,必须就叫codecs。
    3、codecs目录下的所有lib文件可以删除掉。如果只需要显示简体中文,则可以仅保留qcncodecs4.dll(对应Release版)或qcncodecsd4.dll(对应Debug版)。

你可能感兴趣的:(window)