Visual Studio 2022之Release版本程序发送到其它计算机运行

目录

1、缺少dll​

2、应用程序无法正常启动

3、This application failed to start because no Qt platform plugin could be initialized.


代码在Debug模式下正常运行,然后切换到Release模式下,也正常运行,把第三方平台的dll拷贝到exe所在的目录下,再发送到另一台计算机(未安装Visual Studio与QT),遇到如下问题:

1、缺少dll

如果缺少 DLL 文件,这通常是因为程序依赖的某些动态链接库(DLLs)没有随程序一起被正确部署。以下是一些解决此问题的步骤:

确定缺失的 DLL:首先,需要确定哪些 DLL 文件缺失。当在其他计算机上运行程序时,它通常会报告缺少哪个 DLL。

使用依赖项检查器:使用工具如 Dependency Walker (depends.exe) 或 Process Monitor 来检查您的程序依赖哪些 DLL。这些工具可以帮助识别程序运行所需的所有 DLL。

静态链接 vs 动态链接:如果程序依赖于某些第三方库,考虑将这些库静态链接到程序中,而不是动态链接。静态链接会将库的内容直接包含在您的可执行文件中,从而避免 DLL 依赖问题。但是,请注意,静态链接可能会增加可执行文件的大小。

部署 DLL:对于动态链接的库,需要确保所有必要的 DLL 文件都与程序一起部署。这通常意味着将 DLL 文件复制到与可执行文件相同的目录中,或者将它们安装到目标计算机上的系统目录(如 C:\Windows\System32 或 C:\Windows\SysWOW64)中。

使用 Visual Studio 的部署项目:Visual Studio 提供了创建安装项目(如 MSI 安装包)的功能,这可以帮助自动部署您的应用程序及其依赖项。通过安装项目,您可以指定哪些文件应该包括在安装包中,并设置安装过程中的各种选项。

使用第三方安装程序:除了 Visual Studio 的安装项目外,还可以使用如 Inno Setup、NSIS (Nullsoft Scriptable Install System) 或 WiX Toolset 等第三方安装程序来创建安装包。这些工具通常提供了更多的灵活性和自定义选项。

确保运行时环境:如果程序使用了特定的运行时环境(如 .NET Framework、Visual C++ Redistributable 等),请确保目标计算机上也安装了这些运行时环境。

使用延迟加载和错误处理:对于某些可选的 DLL 依赖项,可以使用延迟加载技术,并在运行时检查 DLL 是否可用。如果 DLL 不可用,程序可以优雅地处理这种情况,而不是直接崩溃。

日志和调试:在目标计算机上运行程序时,考虑添加日志记录功能,以便可以更容易地诊断问题。此外,使用调试工具(如 Visual Studio 的远程调试功能)可以帮助更深入地了解问题所在。

运行程序后,弹出如下界面:

在C:\Windows\System32文件夹中找到上述dll,复制到exe所在目录下

2、应用程序无法正常启动

第一步的dll并非只存在C:\Windows\System32文件夹中,如果复制错误,将导致应用程序无法正常启动。​

当Visual Studio 2022编译的Release版本程序在其他计算机上无法正常启动时,可能是由于多种原因导致的。以下是一些可能的解决方案:

检查依赖项:​首先,确保程序所需的所有依赖项都已正确安装和配置。这可能包括运行时库、第三方组件或框架。使用依赖项检查工具可以帮助识别缺少的DLL或组件。

安装Visual C++可再发行组件:如果程序使用了Visual C++编写的代码,确保目标计算机上安装了相应的Visual C++可再发行组件。这些组件包含了程序运行时所需的DLL文件。

配置运行库:在Visual Studio中,您可以配置项目以使用不同的运行库。例如,选择多线程(/MT)或多线程调试(/MTD)选项可以避免程序对运行时库的依赖。确保在发布版本中选择适合的配置。

更新目标计算机上的系统:确保目标计算机上的操作系统和所有必要的更新都已安装。有时,缺少系统更新可能会导致与程序不兼容的问题。

检查程序配置:查看程序的配置文件或设置,确保它们与目标计算机的环境相匹配。例如,检查路径、环境变量或注册表设置是否正确。

使用事件查看器:在目标计算机上,使用事件查看器检查应用程序日志和系统日志,以获取有关程序启动失败的详细信息。这可能会提供有关错误原因的线索。​

3、This application failed to start because no Qt platform plugin could be initialized.

包含QT的程序,运行的时候可能会遇到This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Reinstarlling...这个报错。

错误 "This application failed to start because no Qt platform plugin could be initialized." 通常意味着Qt应用程序在尝试加载平台插件时遇到了问题。平台插件是Qt应用程序用来与操作系统窗口系统进行交互的组件。以下是解决这个问题的一些步骤:

该错误大致意思就是qt平台插件初始化失败了。如图:

解决方法:

将D:\qt\qt5.12.10\5.12.10\msvc2017_64\plugins里面的文件夹复制到exe所在目录下

至此,该exe在另一台计算机正常运行。

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

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

相关文章

IPv6扩展头(四)——分片头

分片头部(Fragment Header)用于IPv6源节点向目的节点发送一个大于路径MTU的数据报。 一、优势 IPv6 分片头具有多种优势,可提高网络效率,包括减少数据包延迟和减少网络拥塞。使用 IPv6 分片头,数据包在源处而不是中间…

Uninty 鼠标点击(摄像机发出射线-检测位置)

平面来触发碰撞,胶囊用红色材质方便观察。 脚本挂载到胶囊上方便操作。 目前实现的功能,鼠标左键点击,胶囊就移动到那个位置上。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c6 : MonoBe…

数据结构-线段树

📑前言 本文主要是【线段树】——线段树简单使用的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&…

PyCharm Community Edition 2023.3.3,UI界面设置成旧版

File->Settings->Appearance & Behavior->New UI->Enable new UI(取消勾选)->重启PyCharm 旧版UI: 新版UI:

对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解

目录 1、JVM 的类加载机制 1.1、加载 1.2、验证 1.3、准备 1.4、解析 1.5、初始化 2、双亲委派模型 2.1、工作过程 1、JVM 的类加载机制 类加载指的是 Java 进程运行的时候,需要把 .class 文件从硬盘读取到内存,并进行一系列的校验解析的过程。…

人民日报:用好“人工智能+” 赋能产业升级

以下文章来源:北京日报 文生视频、智能家居、智慧工厂……近年来,人工智能发展速度之快、应用范围之广备受瞩目。 政府工作报告提出,深化大数据、人工智能等研发应用,开展“人工智能”行动,打造具有国际竞争力的数字产…

力扣589、590、102、107、429、199、637、515、116、117、104、111、226、101-Java刷题笔记

一、589. N 叉树的前序遍历 - 力扣(LeetCode) 1.1题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例&#xff09…

使用Python制作自己的wheel文件

平时自己利用Python制作一个个小工具后想分享给别人,但又嫌分享一堆项目代码很麻烦,那么你可以考虑将自己的项目打包成一个wheel文件,别人拿到文件后只需pip install安装即可使用,非常方便。 在上一篇博文中,利用nvid…

在maven多模块之间调用报错

错误信息为:不能解决maven_02_ssm项目的依赖问题,找不到maven_03_pojo这个jar包。 为什么找不到呢? 原因是Maven会从本地仓库找对应的jar包,但是本地仓库又不存在该jar包所以会报错。 在IDEA中是有maven_03_pojo这个项目,所以…

使用 Python 字典向 SQLite 插入数据

将Python字典数据插入SQLite数据库中其实有很多好处,例如使用字典的结构可以简化插入数据的代码,使其更加紧凑和易于理解。这降低了代码的复杂性,并使代码更易于维护。那么在我们日常使用中会有哪些问题呢?一起看看我是如何解决的…

华为配置DHCP Snooping防止DHCP Server仿冒者攻击示例

配置DHCP Snooping防止DHCP Server仿冒者攻击示例 组网图形 图1 配置DHCP Snooping防止DHCP Server仿冒者攻击组网图 DHCP Snooping简介配置注意事项组网需求配置思路操作步骤配置文件 DHCP Snooping简介 在一次DHCP客户端动态获取IP地址的过程中,DHCP Snoopi…

机器学习知识点复习 上(保研、复试、面试)百面机器学习笔记

机器学习知识点复习上 一、特征工程1. 为什么需要对数值类型的特征做归一化?2. 文本表示模型3. 图像数据不足的处理方法 二、模型评估1.常见的评估指标2.ROC曲线3.为什么在一些场景中要使用余弦相似度而不是欧氏距离?4.过拟合和欠拟合 三、经典算法1.支持…

✅ Windows11 系统 I 卡独显 A770 安装 深度学习 Pytorch 环境

📋 文献参考 这里非常感谢知乎上的 ‘丢丢’ 的[**Windows系统下英特尔独显Pytorch的历程**] 为我提供了一开始的 I 卡安装想法!但是文中并未介绍如何进行额外的环境变量操作问题,导致很多软件直接安装至系统盘,占用系统盘空间&am…

19.相机,棱镜和光场

一、成像方法 Imaging Synthesis Capture 1.Synthesis(图形学上)合成:比如之前学过的光线追踪或者光栅化 2.Capture(捕捉):把真实世界存在的东西捕捉成为照片 二、相机 1.小孔成像 利用小孔成像的相…

【数据结构】矩阵的压缩存储

矩阵的压缩存储 5.1 普通矩阵的存储 用二维数组存储 分为行优先和列优先: 行优先:优先存放一行的数据。 列优先:优先存放一列的数据。 注意下标是从0还是1开始的! 5.2 对称矩阵的存储 对称矩阵定义 若n阶方阵中任意一个元素 a i …

Sqoop “hcatalog does not exist!” 提示信息消除方法

sqoop运行的时候老是有这个报错提示,看着可烦,解决消除一下 解决方法: 1、在$SQOOP_HOME/bin目录下面修改configure-sqoop文件 1)进文件夹 cd /training/sqoop-1.4.7/bin2)编辑文件 vi /configure-sqoop3&#xff…

K8s Pod控制器

目录 前言: 1.Deployment 查看控制器配置 查看历史版本 2.SatefulSet 安装CoreDNS,仅二进制部署环境需要安装CoreDNS 方法一 方法二 查看statefulset的定义 清单定义StatefulSet 创建pv 定义PV 创建statefulset 滚动更新 总结 扩展伸缩…

【MySQL | 第三篇】MySQL索引及两种索引分类方法总结

文章目录 3.MySQL索引及两种索引分类方法3.1索引的概念3.1.1相关定义3.1.2查询例子 3.2索引的底层3.2.1二叉树(1)满二叉树(2)完全二叉树(3)二叉查找树(4)二叉平衡树(AVL&…

HTML静态网页成品作业(HTML+CSS)——电影网首页网页设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

Vue3_2024_6天【回顾上篇watch常见的前三种场景】另两种待补

第一种情况:监视【ref】定义(基本数据类型) 1.引入watch2.格式:watch(基本数据类型数据,监视变化的回调函数) 注意点: 2.1.watch里面第一个参数,是数据~~【监视的基本类…