不能Qt的外部运行Qt Creator的GUI。 “应用程序无法正常启动(0xc000007b)

2019-10-29 04:57发布

我下载的C ++代码从GitHub到训练使用机器学习的物体检测图像标记。

在Qt Creator的4.2.1基于Qt 5.8.0(MSVC 2015年,32位),我是能够编译和运行代码。 不幸的是,我是不是能够运行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."  

我能够重现使用简单的“Hello World”默认情况下,当你创建一个Qt Widget应用程序出现项目的错误。 这使我相信的东西是错的我的安装。

在此基础上文章的建议: 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" 

我附加了一个样本输出。

另一项建议是拷贝过来

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

这也不能工作。

我的下一步行动是简单地获取最新版本QT,并希望最好的结果。 我安装Qt创建者4.8.1基于在5.12.0(MSVC 2015年,32位)。 这一次,我甚至不能让代码在IDE中运行。 我收到1000+错误信息!

根据建议,从几页,我添加

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

到.pro文件,它仍然不会编译。

另外,我验证了应用程序正在被建成一个32位应用程序。 我是一个64位的Windows 10系统上运行。

如果有人想借此裂缝吧,看看他们是否能创建工作的.exe,这里是链接:github.com/clavicule/BBTag

Answer 1:

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

这些工具被称为windeployqt.exe,并配备了您的Qt的安装。 对我来说,它位于C:\Qt\5.9.1\msvc2015_64\bin\windeployqt.exe 。 你将不得不看看你的安装路径和可能的msvc_32文件夹中找到它。

然后,你去用它可执行文件的文件夹,OBEN命令提示符或PowerShell和执行path\to\windeployqt.exe yourProgram.exe ,它会自动将必要的dll文件复制到该文件夹。 之后,您可以不用问题,运行程序。

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

选择1:在开发可以使用QtCreator运行程序时会自动添加路径的dll文件 - 确保包括他们,如果你部署你的计划!

方案2:将路径添加到所需的DLL到PATH环境变量。 这是不推荐或者,因为每个人都谁得到你的程序必须做同样的运行它。



Answer 2:

我想到了! 我的蟒蛇的安装(一个Python分布流行的数据科学和机器学习)是罪魁祸首。

来自:@雷米 - 勒博

应用程序无法正常启动(0xc000007b)

错误:

"The application was unable to start correctly (0xc000007b) ..." 

是一个很好的指标,该32位的应用程序试图加载64位DLL。 起初,这没有任何意义,因为我核实,我使用Qt的32位版本的许多倍。

事实证明,中森蚺的64位版本的安装也包含用于PyQt5包很多QT5的DLL。 由于路径到此文件夹的路径,我的C前传来:\ Qt的... \ bin文件夹,它在构建,而不是使用Qt实际安装的32位版本中使用。 这不是明显的,因为我不知道PyQt5的,所以我不知道它带着蟒蛇。 使用系统环境变量接口和系统重新启动的路径条目的简单重新排序解决了这一问题。

一线希望:我现在知道C ++和设计的GUI W / QT和PyQt5

感谢@albertmand和@jwernerny



文章来源: Cannot run Qt Creator GUI outside of Qt. “The application was unable to start correctly (0xc000007b)” error