VS2012错误:应用程序无法正确启动(0xc000007b)

问题描述 投票:5回答:3

[尝试运行在Visual Studio 2012中构建的C ++ SFML 32位程序的exe文件后,收到错误消息“应用程序无法正确启动(0xc000007b)。我在项目中静态链接了SFML dll,但结合了以下dll和我的程序:

libsndfile-1.dll
openal32.dll
msvcp110.dll
msvcp110d.dll
msvcr110.dll
msvcr110d.dll

怎么了?

c++ visual-studio-2012 dll sfml
3个回答
11
投票

您遇到的实际错误代码是0xC000007B。那就是NTSTATUS错误代码STATUS_INVALID_IMAGE_FORMAT。由于应用程序是32位并且试图加载64位模块,因此几乎总是会出现该错误,反之亦然。在您的情况下,您声明您的应用程序是32位的,因此似乎它正在尝试链接到64位DLL。使用诸如Dependency Walker之类的工具来诊断位错误的模块。


3
投票

错误代码0xC000007B也可能导致,如果您运行的应用程序错误地与.lib文件静态链接,该.lib文件是与.dll相对应的导入库(而不是作为静态库的.lib文件) 。如果您想进一步了解静态库和导入库之间的区别,请参见Why are LIB files beasts of such a duplicitous nature?


1
投票

昨天我也面临着同样的问题。然后,在该应用程序开始运行后,我为32位计算机安装了VS的Redistributable设置,即vc_redist.x86。您可以根据计算机使用32位或64位设置。

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