当编译完成QT程序生成可执行文件后,发布到其他客户端的方法有两种:一种是使用静态库编译;另一种是使用动态库编译,同时附上需要的动态库。
1.1. 静态库编译发布
优点:发布简单,只需要单一QT应用程序。
缺点:库文件很大,更新程序版本不方便,每次升级都需要重新发布所有的程序。
MinGW平台静态编译QT库时,产生静态编译项目文件的Configure命令如下:
# configure.exe-static -platform win32-g++
VS 2008平台静态编译QT库时,产生静态编译项目文件的Configure命令如下:
# configure.exe-static –platform win32-msvc2008
# nmake sub-src (或) nmakerelease sub-src // 完成静态库的编译
然后,在把你的QT程序重新用静态库编译一遍就可以发布静态库版本的QT应用程序。此时,你会得到一个非常大的可执行程序,推荐发布之前使用AspPack压缩下。
1.2. 动态库编译发布
优点:更新方便,发布多个QT应用程序时可以统一使用同一个QT库。
缺点:需要附带动态库,发布时文件比较多。
MinGW编译程序运行时需要的动态库:mingwm10.dl、QtCore4.dll、QtGui4.dll、libgcc_s_dw2-1.dll。
VS2008编译程序运行时需要的动态库: Debug—QtGuiD4.dll、QtCoreD4.dll、msvcr90D.dll;Release—QtCore4.dll、QtGui4.dll、msvcr90.dll和Kernel32.dll。
提示0:QT插件的动态库位于QT安装目录下plugins文件夹中,比如:imageformats目录中有图像插件库,codecs目录中有编码转换库等。
提示1:Qt动态库位于QT SDK安装目录下bin文件夹中,如:D:\Qt\4.8.4\bin。
VS动态库位于VS安装目录下VC\redist\x86文件夹中,如:D:\ProgramFiles\Microsoft Visual Studio 9.0\VC\redist\x86。
提示2:推荐一个很好用的工具“DependencyWalker”,它用于检查程序依赖性,会告诉你的应用程序或者动态库使用那些动态库以及这些动态库位于那个文件夹内。
你可以从官方网址(http://www.dependencywalker.com/)中下载得到,目前最新版本为Depends 2.2。它可以检查出绝大多数程序所需要的动态库文件,你不用手动去检查缺失的动态库文件了。
注意:在VS 2008版本之前的版本中,你可以在VS安装目录下Common7/Tools/Bin下载找到这个小工具depends.exe。
提示3:进程检查工具用来查看程序到底加载那些动态库和插件,例如:Process Explorer,下载网址为http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx。