2014-01-25 115 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?

相關問題