日志
将Qt 动态链接生成的exe及依赖dll打包方法
Qt静态编译链接生成的exe文件,不需依赖一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个文件,问题就解决了。
具体步骤: 一,先动态编译链接,生成exe文件 二,找到依赖的dll文件 这里,我们可以用Process Explore来获取所依赖的dll文件 下载: http://yunpan.cn/Qz6DIEwRvSgrU 打开procexp.exe,通过菜单View==》Lower Pane View==》DLLs 勾选,显示dll窗口 这里,我们以test.exe为例, 在Qt环境下,将exe运行起来,在ProcessExplor中,找到就可以找到test.exe,选中,在下面就看到依赖的dll了。 系统目录下的,一般不用关心,按Path排序,看Qt目录及mingw目录下的,将这些dll拷贝出来,单独放到一个目录下。 三,打包 打包工具,这里选用Enigma Virtual Box, 下载: http://yunpan.cn/Qz6zy7KNBsvkw 安装,运行 Enter Input File Name中,选择exe Enter Output File Name,输出文件名称 点Add按钮,将前面准备好的dll文件,添加进来 点Files Options,勾选Enable Files Virtualization和Compress files,OK 最后,点Process,大告成。打包生成的exe文件也可以象静态编译的一样,可以独立运行了。 |
-
删除
流星321:楼主,我的软件打包后拷到没有装Qt的电脑上运行,中文显示不了,后来把汉字编码库和其它的一些插件库按qt的安装的结构加进去,其它的插件库的运行路径是我添加的,而汉字编码库的路径却是qt安装的路径,楼主求指点
2014-06-29 22:19 -
-
删除
alai881020:如果打包QT的插件呢?也是一样添加插件的库进去吗?但是插件的路径要求在plugins目录下的
2014-01-11 13:27 -
-
删除
alai881020:提示病毒的...
2013-12-10 15:32 --
realfan:是哪个文件被提示病毒?
2013-12-10 16:43
-
删除
qunero:顶楼主大神,不过百度盘上分享的文件好像到期了,“啊哦,你来晚了,分享的文件已经被取消了,下次要早点哟。”
2013-08-15 15:49 --
realfan:已经更新了,再试一下吧
2013-08-15 16:38
-
删除
as55623:相应的dll是不是要放在相应的文件夹?比如说打包的时候 你把qwindows.dll这个放在新建打包目录根目录下(和release的exe处于同一个位置),而原来是在Plugins\platforms\下的
2013-04-23 20:32 --
realfan:一般是要放在相应目录下的,但不要plugins,与exe同目录下,直接创建platforms目录,将qwindows.dll放到这个目录,其它插件类似
2013-04-23 22:24
-
删除
hp_201111:用 depends.exe 可以不运行 Qt 程序, 查处 Qt 程序 依赖的dll。
2013-03-28 22:25 --
realfan:depends walker也是可以的,不过好像这个工具有点老了,2006年的。 感觉有时候,找的dll不全。而且只是指出要的dll,dll文件要自己去找。 process explore在exe运行起来,更保险地指定带路径的dll。
2013-03-29 09:02
-
删除
jeffreylee:这样打包成一个文件,体积变小了没有?
2013-03-28 20:34 --
realfan:勾选的压缩选项,会变小。我测试的,exe加dll总共13.4M,生成的exe为5.9M
2013-03-28 21:57