首页 > 解决方案 > 无法在 Qt 之外运行 Qt Creator GUI。“应用程序无法正确启动 (0xc000007b)”错误

问题描述

我从 GitHub 下载了 C++ 代码来标记图像,以便使用机器学习训练对象检测器。

在基于 Qt 5.8.0 (MSVC 2015, 32bit) 的 Qt Creator 4.2.1 中,我能够编译和运行代码。不幸的是,我无法在 Qt Creator 之外运行 .exe。

最初,我收到一个错误

"The program can't start because libgcc_s_dw2-1.dll is missing". 

谢谢 QT程序无法启动,因为缺少libgcc_s_dw2-1.dll,通过添加很容易修复

"QMAKE_LFLAGS += -static" 

到 .pro 文件。现在,当我运行它时,我得到

"The application was unable to start correctly (0xc000007b). Click OK to close the application."  

我能够使用创建 Qt Widget 应用程序时出现的简单“Hello World”默认项目来重现该错误。这让我相信我的安装有问题。

根据本文的建议:https://stackoverflow.com/questions/12099117/32-bit-qt-application-on-win-7-x64-wont-run-but-runs-fine-from-qt-creator,我使用Dependency Walker来确定可能的原因。我预计只会看到一些我可以跟进的项目。相反,我收到了将近 100 个丢失的 .dll 文件的列表。所有文件都以

"API-MS-WIN ###.DLL" or "EXT-MS ###.DLL" 

其中### 表示一些额外的文本字符,例如;

"API-MS-WIN-SHCORE-STREAM-WINRT-L1-1-0.DLL" 

我附上了一个示例输出。

Dependency Walkder 的屏幕截图

另一个建议是复制

libwinpthread-1.dll, libstdc++-6.dll, libgcc_s_dw2-1.dll.   

那也没有用。

我的下一步是简单地获得最新版本的 QT 并祝愿一切顺利。我安装了基于 At 5.12.0(MSVC 2015,32 位)的 Qt Creator 4.8.1。这一次,我什至无法让代码在 IDE 中运行。我收到了 1000 多条错误消息!

根据几页的建议,我添加了

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

到 .pro 文件,它仍然无法编译。

此外,我验证了该应用程序正在构建为 32 位应用程序。我在 64 位 Windows 10 系统上运行。

如果有人想破解它,看看他们是否可以创建一个工作.exe,这里是链接:github.com/clavicule/BBTag

标签: c++qtcompiler-errors

解决方案


Qt 提供了一个工具来将必要的 dll 复制到可执行文件的文件夹中。

这些工具被称为 windeployqt.exe,并随您的 Qt 安装一起提供。对我来说,它位于C:\Qt\5.9.1\msvc2015_64\bin\windeployqt.exe。您将不得不查看您的安装路径,可能还需要查看 msvc_32 文件夹才能找到它。

然后你转到包含可执行文件的文件夹,打开命令提示符或 powershell 并执行path\to\windeployqt.exe yourProgram.exe,它会自动将必要的 dll 文件复制到该文件夹​​中。之后,您可以毫无问题地运行您的程序。

该工具的官方文档可以在这里找到。

备选方案 1:在开发过程中,您可以使用 QtCreator,它会在运行程序时自动添加 dll 的路径 - 如果您部署程序,请确保包含它们!

备选方案 2:将必要 dll 的路径添加到 PATH 变量中。也不建议这样做,因为获得您的程序的每个人都必须这样做才能运行它。


推荐阅读