gpt4 book ai didi

c++ - 0xc000007b "The application was unable to start correctly"错误?

转载 作者:行者123 更新时间:2023-12-02 10:36:39 27 4
gpt4 key购买 nike

我在 Visual Studio 2019 中编写了一个 C++ 控制台应用程序,并试图将其部署到另一台 Windows 笔记本电脑。两台笔记本电脑都是最新的 64 位 Windows 10,我的目标笔记本电脑已经安装/最新的 .NET Framework、vc_redist.x64.exe 和 DirectX。

在部署方式上,我遵循了this Microsoft walkthrough逐字逐句,增加了确保我新创建的“设置”项目也针对 x64 平台的步骤,因为我代码中的一些外部库需要 x64。生成的“setup”.exe/.msi 对在源笔记本电脑上按计划工作 - 安装和运行无需任何装饰。

在目标笔记本电脑上安装正常,但启动程序会出现本文标题中提到的错误。经过几个小时的尝试,我想我知道问题出在哪里,但首先,我将分享我尝试过的,这基本上是找到的所有建议通过谷歌搜索此错误代码:

  • 干净启动
  • 证监会扫描
  • chkdsk c:/f/r
  • 修复/全新安装第一段中提到的所有框架
  • 以管理员身份运行应用程序安装程序和已安装的应用程序
  • 在所有这些更改之后重新启动笔记本电脑并重新安装应用程序

我认为是问题的根源:

在 VS 的安装/部署项目中,三个“检测到的依赖项”(MSVCP140D.dll、ucrtbased.dll、VCRUNTIME140D.dll)的文件路径是通过...\System32\,而不是可以在...中找到的相同依赖项\SysWOW64。另外两个检测到的依赖项是外部 64 位 DLL(这就是我将整个项目指定为 x64 的原因)。当我通过 Dependency Walker 运行我的应用程序时,它同意前面提到的三个依赖项是“错误的 CPU 类型”,而后两个则没有问题。然而,这种情况并没有向我解释为什么安装/运行(在 VS 之外)在源笔记本电脑上运行良好(如果 VS 打包了 32 位和 64 位依赖项的混合,它不应该运行吗?).事实上,在源笔记本电脑上通过 Dependency Walker 运行应用程序会揭示与在目标笔记本电脑上完全相同的东西 - 同样的 3 个依赖项是“错误的 CPU 类型”,但应用程序在这里运行。

我在 VS 中没有看到更改“设置”项目以读取 64 位文件路径的选项。我曾尝试在各个阶段手动交换 64 位 DLL(包括在 DLL 交换和应用程序运行之间重新启动计算机),这似乎没有任何效果。事实上,我尝试用 SysWOW64 文件夹中的 DLL 替换 System32 文件夹中的 3 个相关 DLL(我的想法是无法更改文件路径的廉价解决方法 - 只需更改文件),这只是让我得到了我在源笔记本电脑上遇到的错误与我在目标笔记本电脑上遇到的错误相同。

所有这些东西对我来说都是相对较新的,所以如果我愚蠢地忽略了我的过程/项目的一些基本细节,请告诉我 - 在这一点上,如果是这样的话会很好,而且这很容易修复。

最佳答案

Wrote this before I noticed the above comment had already answered. Just leaving it in.

Debug Binary:看起来您已经部署了二进制文件的调试版本(D 在文件名:MSVCP140D.dll)。尝试在 Release模式下编译并部署新的二进制文件。

原因:调试二进制文件通常需要 VCRedist 二进制文件的调试版本存在于盒子上您尝试运行二进制文件 - 它们仅在安装了 SDK(和/或 Visual Studio)的开发人员 PC 上可用。该错误消息:0xc000007b 表示 "STATUS_INVALID_IMAGE_FORMAT" .


提示:There are some resource links here and some tips on how to debug deployment problems .

关于c++ - 0xc000007b "The application was unable to start correctly"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59939744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com