在mingw-w64/msys2中编译的应用程序,“应用程序无法正确启动(0xc00007b”

问题描述 投票:0回答:2

mingw-w64 64-bit Shell
中编译应用程序后,它在 shell 内运行良好,但在 shell 外正常运行时会出现错误
the application was unable to start correctly (0xc00007b)

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

c++ windows msys mingw-w64 msys2
2个回答
8
投票

Error

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

解决方案是将

所有

依赖的DLL复制到应用程序路径。 下一个问题是你不知道哪些。

使用 msys2 shell 可以做的事情是:进入目录并运行命令:

ldd application.exe

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


0
投票

https://learn.microsoft.com/en-us/sysinternals/downloads/procmon
导出到 .csv 然后使用变压器:过滤线...

https://marketplace.visualstudio.com/items?itemName=dakara.transformer

© www.soinside.com 2019 - 2024. All rights reserved.