2015年5月16日星期六

Qt 在win上发布打包dll生成exe方法

Reference: http://www.tripleboot.org/?p=138#more-138
       http://blog.csdn.net/maverick1990/article/details/9123785
Qt静态编译链接生成的exe文件,不需依赖七大姑八大姨的一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个文件,问题就解决了。
具体步骤:
一,先动态编译链接,生成exe文件
二,找到依赖的dll文件
这里,我们可以用Process Explore来获取所依赖的dll文件

打开procexp.exe,通过菜单View==》Lower Pane View==》DLLs 勾选,显示dll窗口






这里,我们以test.exe为例,
在Qt环境下,将exe运行起来,在ProcessExplor中,找到就可以找到test.exe,选中,在下面就看到依赖的dll了。








系统目录下的,一般不用关心,按Path排序,看Qt目录及mingw目录下的,将这些dll拷贝出来,单独放到一个目录下。


换台电脑会出现如下的问题
This application failed to start because it could not find or load the Qt platform plugin "windows".
Reinstalling the application may fix this problem.

解决办法是
建一个文件夹 叫做 platforms 把qwindows.dll放进去就可以用了