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

时间:2014-01-25 21:46:06

标签: c++ visual-studio-2012 dll sfml

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

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

有什么问题?

3 个答案:

答案 0 :(得分:11)

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

我不明白为什么要分发MSVC运行时的发行版和调试版。您只需要一个,那个应该是发布版本。结束d的文件是调试版本。您不得重新分发它们。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

希望对您有帮助。 谢谢