笔者安装的是QT SDK。(发行版本这是前提,很重要,不是源码编译版本)
QT不像JAVA那样编译出来就马上可以run everywhere了,运行时还得有必要的运行库支持。接下来就是准备工作: 首先,你得有个编译出来可以运行的程序(嗯,这里代码是什么任君选择,本文篇幅有限就不多说了。) 第二,用release的方式构建工程,而不是debug(相信很多情况下默认是该选项)。对,就是在qt creator 左下角大大的运行按钮(绿色)上面那个选项可以配置。 第三,编译构建工程。去到工程目录下的release目录下可以看到执行程序,我们这时打开一般是可以正常运行的(您的代码没有明显的BUG的情况下)。但是这是一种“假象”(相对我们把这程序扔到别的地方来说。),你可以把这程序放到工程目录以外的目录里单独运行一下,会提示如下图的,找不到xx.dll。
第四,因为QT其实只是类库,我们用QT来写代码,其实也是要依赖QT的机制。故我们写出来的程序,得通过QT来与系统沟通好才行,显现沟通的代码不可能是我们来写,so,我们得有运行必要的库支持。下图即使必要的动态链接库(libgcc_s_dw2-1.dll mingwm10.dll QtCore4.dll QtGui4.dll这是最基本的,如果有用到qt里别的插件模块得另外添加,后面会讲到):
而这四个库如果在qt安装目录下查找你可能会晕倒,因为出现一大堆同名的,用哪个好呢?我们需要用到的就是 C:\QtSDK\Desktop\Qt\4.7.4\mingw\lib (这里我的SDK是安装在C盘,请根据自己情况找)。我们把以上四个库放在release版本执行程序同一个目录,这时就可以顺利运行了。
还有一种普遍的情况得说以下,就是我们用到第三方库或者QT自带的插件模块。例如我的程序要用到了phonon了,一般要进行如下操作: 1 工程文件xxx.pro里添加红色部分 QT += core gui phonon 2 找到phonon4.dll 还是在刚才所说的lib目录下找,复制到执行文件同一目录。 2 找到phonon插件所在目录 C:\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\phonon_backend(这是笔者的)把此目录复制到release执行文件所在目录下的plugins(这个目录也需要自己创建)下。 3 在源代码里的main.cpp修改如红色字体: QApplication a(argc, argv); a.addLibraryPath("./plugins"); 大功告成,编译去吧。
最后就总结一下,你要发布一个QT程序最终需要的文件如下: 1 一个独立的目录,内有经过release构建的执行程序(代码得根据以上所说做出修改) 2 最基本的4个库文件 libgcc_s_dw2-1.dll mingwm10.dll QtCore4.dll QtGui4.dll放在与执行文件同一目录下。 3 如果程序代码用到了插件或者第三方库,同样地放在同一目录下。而插件的支持要在代码内添加子目录路径。(思考一下,为什么不都放在同一目录?)当然为了方便扩展和便于管理。
关于如何打包程序,制作成安装包,请看下面文章: QT在windows上发布之NSIS的使用方法(二)http://blog./uid-24641004-id-3412254.html
这是noiplee的技术博客,我写博客的目的是想通过快速分享来达到掌握知识的目的,同时希望和各位网友交流共同进步。如果您看了我的文章有任何的建议或者观点,非常欢迎留言和评论,有任何问题我们都可以一起探讨,我会及时回复的。
|
|