Qt开发:windows下发布动态编译程序
2015-02-08 20:20
330 查看
Qt开发发布程序有两种:静态编译和动态编译。
静态编译将所有用到的库及资源文件打包成一个exe执行文件,能保证在不同的机器上都能运行,不依赖于某个运行库。
动态编译只生成一个最小的可执行exe,其他的依赖库dll需要与exe一起打包,这样的好处是体积小,不过在不同的机器上可能会出现丢失dll的问题。
Qt-creator默认情况下是动态编译的,本文只讨论动态编译的情况下发布Qt开发的程序。
1 生成release版的exe
用IDE编译生成自己建立的工程的exe执行文件。
2 检查依赖库
将生成的exe拷贝到一个干净的windows机器上(最好没安装过vc运行库,没安装过qt),用hap-depends或者process explorer等软件查看exe所缺失的dll。
3 拷贝依赖库
分三种:
(1)Qt相关库,比如程序的pro文件里引入了相关模块,QT+=core gui widgets xml multimedia network printsupport,那么就需要把相对应的Qt模块的dll拷贝到exe同目录下。例如:Qt5Core.dll Qt5Gui.dll Qt5Xml.dll Qt5Multimedia.dll Qt5Network.dll Qt5PrintSupport.dll Qt5Widgets.dll icudt52.dll icuin52.dll icuuc52.dll,有时候可能还需要libEGL.dll
(2)VC运行相关库:如果编译器是VC10,11,12等比较先进的运行库,以vc12为例,就需要到system32里面找到对应的msvcp120.dll和msvcr120.dll,并拷贝到exe目录。
(注意:有时候拷贝过去在别人的机器仍然运行报错,解决方法是:到网上下载这几个dll然后覆盖到exe目录)
(3)Qt plugins里面的依赖库,这里面的dll都是为了解决Qt跨平台所要用到的一些基础库,到这一步运行exe还是会报错:
解决方法是:找到Qt安装目录下的plugins文件夹,将需要用到的第三方库的文件夹整个拷贝到exe根目录(然后可以删掉里面不需要的debug版的dll和pdb文件,节省空间),一般情况下需要platforms(必须的,解决窗口问题)和imageformats(解决图标、图片资源等问题)这两个文件夹。
4 打包成安装包
用exe打包工具对整个程序文件夹打包成安装包。
最后,附上我做的一个小软件最终的程序发布根目录结构,
静态编译将所有用到的库及资源文件打包成一个exe执行文件,能保证在不同的机器上都能运行,不依赖于某个运行库。
动态编译只生成一个最小的可执行exe,其他的依赖库dll需要与exe一起打包,这样的好处是体积小,不过在不同的机器上可能会出现丢失dll的问题。
Qt-creator默认情况下是动态编译的,本文只讨论动态编译的情况下发布Qt开发的程序。
1 生成release版的exe
用IDE编译生成自己建立的工程的exe执行文件。
2 检查依赖库
将生成的exe拷贝到一个干净的windows机器上(最好没安装过vc运行库,没安装过qt),用hap-depends或者process explorer等软件查看exe所缺失的dll。
3 拷贝依赖库
分三种:
(1)Qt相关库,比如程序的pro文件里引入了相关模块,QT+=core gui widgets xml multimedia network printsupport,那么就需要把相对应的Qt模块的dll拷贝到exe同目录下。例如:Qt5Core.dll Qt5Gui.dll Qt5Xml.dll Qt5Multimedia.dll Qt5Network.dll Qt5PrintSupport.dll Qt5Widgets.dll icudt52.dll icuin52.dll icuuc52.dll,有时候可能还需要libEGL.dll
(2)VC运行相关库:如果编译器是VC10,11,12等比较先进的运行库,以vc12为例,就需要到system32里面找到对应的msvcp120.dll和msvcr120.dll,并拷贝到exe目录。
(注意:有时候拷贝过去在别人的机器仍然运行报错,解决方法是:到网上下载这几个dll然后覆盖到exe目录)
(3)Qt plugins里面的依赖库,这里面的dll都是为了解决Qt跨平台所要用到的一些基础库,到这一步运行exe还是会报错:
This application failed to start because it could not find or load the Qt platform plugin "windows"
此时不要惊慌。解决方法是:找到Qt安装目录下的plugins文件夹,将需要用到的第三方库的文件夹整个拷贝到exe根目录(然后可以删掉里面不需要的debug版的dll和pdb文件,节省空间),一般情况下需要platforms(必须的,解决窗口问题)和imageformats(解决图标、图片资源等问题)这两个文件夹。
4 打包成安装包
用exe打包工具对整个程序文件夹打包成安装包。
最后,附上我做的一个小软件最终的程序发布根目录结构,
相关文章推荐
- Qt for Windows:静态发布QML开发的程序
- Qt5.0.2 + MinGw4.7 编译出来的程序,在windows平台下的发布与打包程序
- VS2005下如何安装配置编译并开发QT4.4.3程序
- [技术学习]在Linux平台学习Windows开发技术(一)----编译第一个MFC程序
- 关于在windows下部署发布QT程序的总结
- Qt 程序在 windows 下的发布
- QT发布程序中文乱码完全解决方案 Qt for Windows
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
- 关于在windows下部署发布QT程序的总结
- 关于在windows下部署发布QT程序的总结
- 关于在windows下部署发布QT程序的总结
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
- Fc7下利用KDevelop3.5.2平台来编译开发QT4程序的完全解决
- Qt 程序在 windows 下的发布
- 关于在windows下部署发布QT程序的总结
- 关于在windows下部署发布QT程序的总结
- QT程序在windows下部署发布
- 关于在windows下部署发布QT程序的总结
- QT在Windows下发布程序的方法(安装文件的制作)
- 关于windows环境下QT开发ICE程序无法正确连接类库的解决方法