记录: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出来在客户机安装就行了。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

transformer_位置编码代码笔记

transformer_位置编码代码笔记 transformer输入的序列中,不同位置的相同词汇可能会表达不同的含义,通过考虑位置信息的不同来区分序列中不同位置的相同词汇。 位置编码有多种方式,此处仅记录正余弦位置编码 正余弦位置编码公式如下&#x…

宠物用品/宠物自动饮水机方案

宠物自动饮水机方案原理 宠物自动饮水机,也叫做智能宠物饮水机,是一种为宠物设计的智能化饮水器。应用核心主要在于智能化水泵控制,以及外围传感器电路。 宠物自动饮水机使用方便,不用频繁的换水。另外,自来水的水质可…

(6)Elastix图像配准:可视化配准工具

文章目录 前言一、配准工具1.1、基于Elastix的可视化配准工具1.1.1、elastix-napari:基于napari的Elastix图像配准1.1.2、SlicerElastix:基于3D slice的Elastix图像配准1.1.3、BIRDS:基于ImageJ的Elastix双通道图像配准 1.2、基于ITK开发的配…

微信小程序如何实现点击上传图片功能

如下所示,实际需求中常常存在需要点击上传图片的功能,上传前显示边框表面图片显示大小,上传后将图形缩放到边框大小。 实现如下: .wxml <view class="{{img_src==?blank-area:}}" style="width:100%;height:40%;display:flex;align-items: center;jus…

容器算法迭代器初识

#include<iostream> using namespace std; #include<vector> //vetor容器存放内置数据类型 void test01() {//创建了一个vector容器&#xff0c;数组 vector<int> v;//向容器中插入数据v.push_back (10);//尾插 v.push_back (20);v.push_back (30);v.push_ba…

WIN11 - WSL(Windows Subsystem for Linux) 安装教程

前言 WSL&#xff0c;即Windows Subsystem for Linux&#xff0c;是一种在Windows操作系统上运行Linux二进制文件的兼容层。该层提供了Linux环境和GNU工具&#xff0c;可以在Windows系统上运行Linux应用程序。WSL使得开发人员可以在Windows系统上使用Linux工具和命令行界面&am…

项目实战:一个基于标准库的具备最值获取的万能容器实现

目录 写在前面 需求 分析 接口设计 项目实现 一些思考与总结 致谢 写在前面 刚刚介绍了变参模板和完美转发&#xff0c;现在换一换脑子做一个小的项目实战吧。博主最近学习的是标准库&#xff0c;总体来说&#xff0c;我认为标准库中的内容是很trivial的&#xff0c;重点…

04 避免 Latch 的产生

Latch 是什么 latch 即锁存器&#xff0c;是一种对电平敏感的存储单元电路&#xff0c;和寄存器一样都是基本存储单元&#xff0c;但是寄存器是边沿触发的存储器&#xff0c;锁存器是电平触发的存储器。 组合逻辑电路和时序逻辑电路 在数字电路中将逻辑电路分成两大类&#…

Java学习笔记(十一)——常用类

一、包装类 &#xff08;一&#xff09;包装类和基本数据类型的转换 ​编辑 &#xff08;二&#xff09;包装类型和String类型的相互转换 &#xff08;三&#xff09;Integer类和Character类的常用方法 二、String &#xff08;一&#xff09;创建String对象的两种方式 …

【爬虫专区】批量下载PDF (无反爬)

天命:只要没反爬,一切都简单 这次爬取的是绿盟的威胁情报的PDF 先看一下结构,很明显就是一个for循环渲染 burp抓包会发现第二次接口请求 接口请求一次就能获取到了所有的数据 然后一个循环批量下载数据即可,其实没啥难度的 import requests,osres = requests.get("…

C++ 数论相关题目 台阶-Nim游戏

现在&#xff0c;有一个 n 级台阶的楼梯&#xff0c;每级台阶上都有若干个石子&#xff0c;其中第 i 级台阶上有 ai 个石子(i≥1 )。 两位玩家轮流操作&#xff0c;每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中&#xff08;不能不拿&#xff09;。 已经拿到地面…

鸿蒙会取代Android吗?听风就是雨

现在说取代还谈不上&#xff0c;毕竟这需要时间。安卓作为全球第一的手机操作系统&#xff0c;短时间内还无法取代。持平iOS甚至超过iOS有很大可能&#xff0c;最终会呈现“三足鼎立”有望超过安卓基数。 作为全新的鸿蒙操作系统&#xff0c;其现在已经是全栈自研底座。按照鸿…

linux --中断管理 -- irq的自动探测机制

irq自动探测机制 如果一个设备的驱动程序无法确定它说管理的设备的软件中断号irq&#xff0c;此时设备驱动程序可以使用irq的自动探测机制来获取其正在使用的irq。 使用自动探测机制的条件 内核与驱动&#xff0c;必须共同努力才能完成只限于非共享中断的情况 探测前&#…

vue3前端开发框架的安全特性,非常适合现在的市场需求

vue3前端开发框架的安全特性,非常适合现在的市场需求&#xff01;现在几乎所有的前端开发&#xff0c;都是使用的vue3做了开发。下面给大家展示一下。为什么说vue3框架自带安全特性呢。 如图&#xff0c;这个是我们在浏览器内看见的&#xff0c;渲染后的数据页面信息。很齐全。…

React中文官网已经搬迁了,原网址内容将不再更新

注意1&#xff1a;React中文官网已经搬迁至-React 官方中文文档&#xff0c;原网址内容将不再更新 注意2&#xff1a;React官网已经将React的定义由“用于构建用户界面的 JavaScript 库”更改为“用于构建 Web 和原生交互界面的库”。

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-5 Canvas 绘制三角形

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>Canvas 绘制三角形</title> </head><body><canvas id"cavsElem">您的浏览器不支持Canvas&#xff0c;请升级浏览器</canvas…

最快最便捷的pytest使用allure测试报告

一、前言 最近通过群友了解到了allure这个报告&#xff0c;开始还不以为然&#xff0c;但还是逃不过真香定律。 经过试用之后&#xff0c;发现这个报告真的很好&#xff0c;很适合自动化测试结果的展示。下面说说我的探索历程吧。 选用的项目为Selenium自动化测试Pytest框架…

k8s的operator基石:controller-runtime源码解析

写在之前 今天开始开更controller-runtime的源码阅读&#xff0c;笔者建议大家在阅读前了解以下知识&#xff0c;可能会帮助大家更好的理解源码逻辑。 1.client-go的基础使用 2. 使用kubebuilder搭建一个简单的controller-runtime环境 3.informer的基本思想 1.源码环境搭建 参…

代理模式(静态代理、JDK 动态代理、CGLIB 动态代理)

代理模式(静态代理、JDK 动态代理、CGLIB 动态代理) 一、代理模式概述1. 生活中的代理案例2. 为什么要使用代理3. 代理模式在 Java 中的应用4. 概述5. 生活中代理图示二、代理的实现方式1. Java 中代理图示2. 静态代理2.1 案例2.2 实现案例2.3 静态代理存在的问题三、动态代理…

SpringBoot的默认组件扫描

本篇博客主要探究&#xff1a;为什么SpringBoot项目中我们没有配置组件扫描的包&#xff0c;为什么它会默认扫描启动类所在的包&#xff1f; 一、访问与启动类所在同一包下的接口 我们先来看一个简单的接口&#xff1a; 我们可以观察到&#xff0c;HelloController这个类处在…