2014-01-25 114 views
4

尝试运行我的C++ SFML 32位程序的我的exe文件后,收到错误“应用程序无法正确启动(0xc000007b)”的Visual Studio 2012年我静态链接我的项目中SFML的dll,但是融入了我的程序大致如下dll文件:VS2012错误:应用程序无法正确启动(0xc000007b)

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

问题是什么?

+0

msvcr110d.dll - 这是针对调试版本的。尝试安装MSVC++ 2012 redistributables。 – neagoegab

回答

10

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

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

+1

@user你还在卡住吗? –

+0

不,我解决了这个问题。谢谢你的帮助。 – user3236245

+1

问题是? –

3

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

相关问题