记录:Windows上QML程序打包

0.本文修改记录

(2019-9-3) 修改了VC环境相关的内容

(2020-3-5) 修改了QML模块相关的内容

(2022-8-31)one-rabbit大佬指出打包命令的参数错误,根据文档可知:qmldir应该为exe对应项目qml文件目录,qmlimport才是模块搜索的qml目录。之前错误的将qmldir设置为了安装目录。

文档:https://doc.qt.io/qt-5/windows-deployment.html

1.打包过程

使用Qt自带的命令行工具执行windeployqt命令(比QtWidgets打包多了qml路径设置):

windeployqt 程序.exe --qmldir "项目qml文件所在目录" 

一般情况下该拷贝的库也拷贝过去了,可以双击exe运行验证下是否正常。

如果点击exe并不能正常运行,甚至连个响应都没有。通过重定向qDebug输出到文本,可以看到一堆qml的东西没加载。在网上也没有看到靠谱的教程,只能自己折腾了。写了下qt.conf文件配置库路径,并没效果。后来把qt环境里qml文件夹整个copy过来,总算是运行起来了,或许是qml代码里用到的库打包的时候没有被检测到,导致程序启动时加载失败。(2020-3-5补充)有些模块除了需要qml文件夹下的dll,还依赖了bin文件夹下对应的dll,可能需要手动拷贝过来(如QChart,Location,Position之类的),当然懒得找也可以把Qt环境里bin文件夹下release版的dll全copy过来

注意打包命令出来的Qt5Core.dll和bin目录下那个有点不一样,bin目录下那个带环境绝对路径,自己手动copy的话需要注意下。

 

2.整理下打包目录

由于文件夹和dll太多了,接下来把目录整理下。先把qml文件夹下的带d的debug动态库删了(如果是直接全部copy过来的话),然后把windeploy打包过来的那些原qml目录下的大写Q开头的文件夹删了,原plugins文件夹下的新建个plugins文件夹放置,默认qml和plugins是平级的,所以不用写qt.conf文件指定。(暂时还没找到方法把这些原bin目录下的dll怎么整理到一个文件夹下)

对于qt.conf,参照 https://doc.qt.io/qt-5/qt-conf.html

不过最后应该是要做成安装包的(使用setup factory、inno setup、qt install framework等工具),所以也不用精简这个文件夹目录。

3.VC运行环境

MSVC编译器打包发布的程序可能会遇到提示找不到 vcruntime140.dll(不同MSVC版本对应不同数字编号)。可以通过Dependencies来查找依赖库(链接 https://github.com/lucasg/Dependencies/releases 解压后运行DependenciesGui,对于360可能会报毒),然后将找到的dll放到exe目录里。

也可能会提示丢失MSVCP140.dll,可以用everything搜该dll,然后放到exe目录里(我一般喜欢copy MSVC安装目录下的)。还可以把MSVC目录下的vcredist_x86/x64.exe拿过去安装下,用everything搜这个程序,然后copy出来在客户机安装就行了。)

Windows Server 2012 R2 Datacenter是Windows Server 2012 R2的一个版本,它是Windows Server 2012 R2的高级版本之一。Windows Server 2012 R2 Datacenter具有更多的功能和更高的性能,适用于大型企业和云计算环境。它支持更大的内存限制(最高4TB),更多的用户上限(不限制),以及更多的网络策略和访问服务。此外,它还支持虚拟化权限,可以同时运行多个虚拟机。Windows Server 2012 R2 Datacenter还包括许多其他功能,如文件服务、远程桌面连接、DHCP服务、DNS服务、打印与文档服务、Web服务(Internet Information Services)等。\[1\] 关于您提到的在Windows Server 2012 R2 Datacenter云服务器上运行基于opencv的python程序报错的问题,可能是由于缺少某些库文件导致的。您可以尝试安装VC++和C运行环境补丁,并使用DependenciesGui.exe工具检查是否有缺失的库文件。如果缺少某些dll库文件,您可能需要安装桌面体验功能来解决此问题。\[3\] #### 引用[.reference_title] - *1* *2* [Windows2012R2版本区别](https://blog.csdn.net/jjkliu/article/details/50547090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [解决Windows Server 2012 R2 Datacenter云服务器无法运行opencv python程序的问题](https://blog.csdn.net/anaigeng8186/article/details/102316860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚建波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值