QtQuick,qt3d在windows下打包单一exe(待详细)

来源:互联网 发布:花呗只能在淘宝用吗 编辑:程序博客网 时间:2024/05/21 19:50

前提基于Qt4.8.0,Qt3D 1.0,其实版本不同只是依赖的dll不同,思路是一样的。

1. 依赖文件的问题,如果在QML中没有引用QtWebkit,Qt3d等那么依赖的库仅仅是bin下的dll,但是如果引用了,就要依次在根目录下仿照引用的目录结构建立文件夹,比如Qt3D的引用:

Qt3D/qmldir
Qt3D/qthreedqmlplugind.dll

qmldir等文件直接到~\4.8.0\imports\Qt3D下复制出来就可以,还有
~\4.8.0\plugins\sceneformats
~\4.8.0\plugins\imageformats

如果用到了例子特效什么的还要加上
~\4.8.0\imports\Qt\labs\particles

2. 如何发现
两款软件:
Dependency Walker
打开软件,把执行程序拖进去即可。
能找到最小的程序依赖,多数情况下不全。
Process Explorer
看到这款软件真有相见恨晚的感觉。
在本地执行待打包的程序,同时执行这款软件,在进程中找到程序的进程,查看dll依赖,会看到程序所有的依赖dll,尽管有些非必要或根本就不需要。

4. 说下本人打包方法
在本机上建个VMware局域网,包含不同版本的纯净系统,每个节点上建个共享目录放待打包的文件。
在开发机上执行远程目录中的exe程序,程序正常执行后,在Process Explorer中看依赖关系,如果dll指向远程目录说明已经包含了,如果指向本机,尤其是指向Qt的安装目录,八成是缺失的依赖。

4. 打包单一exe
方法很多,比如:MoleBox Pro,Enigma Virtual Box。
以前用前者打包python时不能运行,不知新版有没有改善。
用法都很简单,可以参考下文的链接。

5. 参考链接:
1. 官网的说明:
http://doc.qt.digia.com/qt/deployment-windows.html

2. 国外一篇详细的介绍:
http://www.johanpaul.com/blog/2011/07/deploying-qt-and-qt-quick-applications-on-windows/

3. 程序依赖性,虚拟化工具打包
http://4137613.blog.51cto.com/4127613/834075

原创粉丝点击