c++ - 在 mingw-w64/msys2 中编​​译的应用程序, "the application was unable to start correctly (0xc00007b"

标签 c++ windows msys mingw-w64 msys2

mingw-w64 64-bit Shell中编译应用后,在shell中运行正常,但报错the application was unable to start correctly (0xc00007b) 当正常运行时,在 shell 之外。

当它提示缺少它们时,我从 msys2/mingw-w64 bin 目录中移动了一些必要的 DLL,但现在它给出了这个不透明的错误。我做错了什么?

最佳答案

错误 0xc00007b 基本上意味着“无效的图像格式”,通常在混合 64 位和 32 位 DLL 时发生。发生的情况是,您有一个 64 位应用程序,正在寻找一个特定的 DLL, 全局路径中,但路径中的那个是 32 位的。因此,问题是:它不会提示缺少 DLL,它只是尝试加载它。由于它是 32 位应用程序,而您的应用程序是 64 位应用程序,因此您会收到错误 0xc00007b

解决方案是将所有 依赖的 DLL 复制到应用程序路径。

下一个问题是您不知道是哪些。

您可以使用 msys2 shell 做的是:转到目录并运行命令:

ldd application.exe

这将为您提供应用程序所依赖的 DLL 列表。将msys2/mingw-w64相关的DLL复制到该目录下。这将允许应用程序在查找 PATH 和查找 32 位 DLL 之前找到它们。

关于c++ - 在 mingw-w64/msys2 中编​​译的应用程序, "the application was unable to start correctly (0xc00007b",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323865/

相关文章:

permissions - 使用 minGW 和 MSYS 在 Windows 上构建 libav 时出错

C++ - 创建文件夹方法

c++ - boost相当于windows mutex

c++ - Visual Studio C++ 为什么不编译 0b00000001

java - 无法从 Java 进程使用 taskkill.exe

c++ - 如何使用 win32 api 将我的应用程序窗口放置在 Windows 桌面窗口层次结构中的特定位置?

windows - 如何重新分配 Gdiplus (GDI+)?

c++ - 比较模板类型和具体类型的实例

sbt - 怎么玩啊!在 MSYS bash 中运行的框架

c - mingw64 系统 ("command") 与 shell 中的 "command"不同