目录
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在另一台计算机正常运行。