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

时间:2015-12-16 23:07:32

标签: c++ windows msys mingw-w64 msys2

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

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

1 个答案:

答案 0 :(得分:3)

错误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之前找到它们。