【问题标题】:Windows 10: The application was unable to start correctly (0xc000a200)Windows 10:应用程序无法正确启动 (0xc000a200)
【发布时间】:2016-05-18 03:01:55
【问题描述】:

我正在 Windows 10 上开发我的 QT 应用程序。开发完成(就目前而言)。

从 QT-creator 以调试模式运行应用程序后,我试图从构建目录运行可执行文件。但它向我显示了一个“应用程序错误”对话框,其中包含以下消息:

应用程序无法正确启动 (0xc000a200)。点击确定 关闭应用程序。

是什么问题以及如何解决?!

【问题讨论】:

  • 有什么问题 =>不知道。 如何修复它尝试在事件查看器中收集信息
  • 很可能在 Qt Creator 之外,您的应用无法找到 Qt 共享库(或者您的应用使用的任何其他库,如果有的话)。使用dependency walker 追踪您的可执行文件所依赖的库;如果缺少任何内容,请找到它们并将其路径添加到 PATH 环境变量
  • 我建议不要将 Qt 库添加到您的路径中,因为这可能会导致问题。但是我自己也遇到过这种情况,我可以向你保证,德米特里是正确的。根据您使用的 Qt 功能,将适当的 Qt DLL 文件添加到您的程序文件夹中。
  • 查看这个问题以获得一对夫妇的解决方案stackoverflow.com/questions/22185974/…
  • @Chris 你确定这是同一个问题吗?是的,缺少 Qt DLL 肯定会导致应用程序无法正确启动,但此特定错误消息表明问题与应用程序容器有关。因此,问题似乎不太可能是缺少 DLL。 DLL 在那里,只是它们的标头中有错误的标志。

标签: c++ qt qt-creator


【解决方案1】:

错误代码在错误消息中提供给您是有原因的。它们对普通用户没有任何意义,但我们是程序员,我们是目标受众。既然谷歌已经发明出来,你绝对没有理由不花 5 秒钟时间谷歌搜索错误代码并看看它的含义。

在这种情况下,0xc000a200 是对应于STATUS_NOT_APPCONTAINER 的错误代码。 COM 错误代码的主要列表位于 Windows SDK 标头中,特别是 ntstatus.h。如果你看这个,你会看到以下描述:

此操作仅在应用容器的上下文中有效。

现在,诚然,一旦你达到了这一点,你可能会发现你已经完全超出了你的想象。您可能不知道应用程序容器是什么,当然也不知道如何修复它。但至少那时您将能够提出一个好问题,这将大大有助于为您提供一个好的答案。

但是,让我们看看这次你是否能走运。当应用程序容器内的应用程序尝试加载标记为应用程序容器一部分的 DLL 时,最常遇到此错误。链接器负责将 DLL 标记为是否属于应用程序容器,由您使用的任何链接器的一系列选项控制。在微软的链接器上,控制它的是/APPCONTAINER:YES and /APPCONTAINER:NO。我不确定 Qt Creator 使用什么工具链,但如果它不是 Microsoft 的,这至少应该让您开始在该链接器的文档中查找正确的位置。确保您的应用程序使用的所有 DLL没有被标记为应用程序容器的一部分。

对于常规 C++ 桌面应用程序项目,该选项应默认关闭,但其中一个 DLL 有可能作为 Windows 应用商店应用程序的一部分开始使用。也有可能是开关不小心被扔掉了。

【讨论】:

  • 首先,我想对您的详尽回答表示感谢。其次,你是完全正确的,我应该先去谷歌,这就是我所做的。但我不是专业的程序员,对我来说这是一种爱好。我不明白论坛上的任何事情,我需要更多明文解释。我道歉。至少现在,从您的回复中,我可以深入了解问题并重新编辑我的问题,使其更加精确和有意义。
  • 这对我有用。我认为这应该是公认的答案。 @Suda.nese
【解决方案2】:

我遇到了同样的错误,但批准的解决方案并不能解决问题。我发现我安装了错误的 Qt 编译器支持包。对我来说,它是在 Windows 10 64 位上与 Visual Studio 2017 一起使用的 Qt 5.9.1。安装 Qt 时,我选择了“msvc2017 64 位”选项。听起来不错,对吧?错误:我想要的是“UWP x64 (MSVC2017)”。

【讨论】:

    猜你喜欢
    • 2017-08-21
    • 1970-01-01
    • 2015-01-31
    • 2014-07-21
    • 2016-08-15
    • 2014-08-27
    相关资源
    最近更新 更多