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.hqwc.cn/news/538108.html

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

相关文章

现货大宗电子盘交易软件的核心功能代码

现货大宗电子盘交易软件的核心功能代码是高度复杂且专有的,通常涉及多个模块和组件,包括但不限于用户认证、交易撮合、订单管理、风险管理、市场数据展示等。由于这些系统通常是由专业的金融科技公司或软件开发商根据特定的业务需求和技术标准定制开发的…

在unity中生成一个随机数

1.首先建立一个画布和空对象 2.创建脚本并将代码复制进去 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class suijishu : MonoBehaviour {public TextMeshProUGUI sjs;void Update(){if (Input.GetKeyDown(KeyCode.…

污水处理远程监控管理平台

随着城市化进程的加速和工业化的快速发展,污水处理成为了环境保护和可持续发展的重要环节。传统的污水处理监控方式往往依赖于现场巡查和人工记录,这种方式不仅效率低下,而且容易出现监控盲区,难以实现对污水处理过程的全面、实时…

Web框架开发-Django的视图层

一、视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓…

深入理解指针——C语言

目录 1. 内存和地址 2. 指针变量和地址 3. 指针变量类型的意义 4. const修饰指针 5. 指针运算 6. 野指针 7. assert断言 8. 指针的使用和传址调用 9. 数组名的理解 10. 使用指针访问数组 11. 一维数组传参的本质 12. 冒泡排序 13. 二级指针 14. 指针数组 15. 指…

Windows系统下载安装Emby结合内网穿透实现公网访问本地影音网站

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…

6.S081的Lab学习——Lab1: Xv6 and Unix utilities

文章目录 前言一、启动xv6(难度:Easy)解析: 二、sleep(难度:Easy)解析: 三、pingpong(难度:Easy)解析: 四、Primes(素数,难度:Moderate/Hard)解析&#xff1a…

Visual Basic6.0零基础教学(3)—焦点概念和深入学习属性

焦点概念和深入学习属性 文章目录 焦点概念和深入学习属性前言一、什么是焦点(Focus)?焦点的特点 二、窗体属性一、窗体的结构二、窗体的属性三、事件四、方法 一.控件属性一. 标签 Label二.文本框 TextBox2.常用事件 三.命令按钮事件 总结 前言 今天我们来继续学习VB中的属性…

服务器数据恢复—raid5热备盘上线同步数据失败的如何恢复数据

服务器数据恢复环境&故障&分析: 一台存储上有一组由多块硬盘组建的raid5阵列,该raid5阵列中的一块硬盘掉线,热备盘自动上线同步数据的过程中,raid阵列中又有一块硬盘掉线,热备盘的数据同步被中断,r…

Linux中判断某个Docker容器服务的内存是否超过临界值,比如到达10G,则在凌晨4点执行定时任务执行重新构建命令

监测NAME是blade-jiangxinzhougarden的服务,如果内存(MEM USAGE)超过10G则在凌晨4点执行重新构建命令 1.编写脚本文件restart_jxz.sh #!/bin/bash# 设置要监控的容器名称或服务名称(替换成你的服务名) SERVICE_NAME"blade-jiangxinzhou…

科研学习|论文解读——指导关键词组提取的局部词向量

原文标题 Local word vectors guiding keyphrase extraction 摘要 自动关键词组提取是一项基本的文本信息处理任务,涉及到从文件中选择具有代表性的短语来概括其内容。这项工作提出了一种新的无监督的关键词组提取方法,其主要创新点是使用局部词嵌入(特别…

一款前端开发工具Hbuilder

背景:最近日在接触前同事留下的一个VUE项目(只有前端代码,后台服务压根没写真不知道以前是怎么糊弄过去的)时,发现一款可以快速开发前端的软件;今日分享一下。 当我打开项目时发现,有个app.vue…