尝试运行我的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
问题是什么?
尝试运行我的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
问题是什么?
您遇到的实际错误代码是0xC000007B
。那是NTSTATUS错误代码STATUS_INVALID_IMAGE_FORMAT
。这个错误几乎总是出现,因为应用程序是32位,并试图加载64位模块,反之亦然。在你的情况,你声明你的应用程序是32位的,所以它似乎试图链接到一个64位的DLL。使用像Dependency Walker这样的工具来诊断具有错误位的模块。
我不明白你为什么要发布MSVC运行时的版本和调试版本。你只需要一个,那个应该是发布版本。结尾d
的文件是调试版本。你不能重新分配他们。
错误代码0xC000007B
也可能导致您运行的应用程序错误地与.lib文件进行了静态链接,该文件是与.dll对应的导入库(而不是静态库的.lib文件) 。如果您想了解更多关于静态库和导入库之间的差异,请参阅Why are LIB files beasts of such a duplicitous nature?
msvcr110d.dll - 这是针对调试版本的。尝试安装MSVC++ 2012 redistributables。 – neagoegab