2013-01-06 59 views
1

標題非常簡單 - 在x64中構建時我無法獲取任何內容,因此我收到了帶有此錯誤代碼的消息框。你知道這裏可能是什麼問題嗎?MSVC 2010 - 錯誤0xc000007b在x64中構建時

+0

原來這只是在調試模式下發生的,所以我能夠弄清楚我的一個dll只有32位,一旦我更換了它,一切都很好。 – Philip

回答

2

這是STATUS_INVALID_IMAGE_FORMAT,您可以在ntstatus.h SDK頭文件中找到這些錯誤代碼。

這當然與構建x64代碼密切相關。只要你的程序依賴於32位代碼,你就會得到這個狀態碼,特別是在DLL中。當它在啓動時嘗試加載DLL時,程序將無法啓動,64位進程不能包含任何32位代碼。或者反過來,一個32位進程試圖加載一個64位DLL。

查看您程序的所有依賴項,特別是鏈接的導入庫。一切都必須建立目標x64。您可以使用SysInternals的ProcMon實用程序來查找無法加載的DLL,以防萬一這是一個DLL地獄問題。

+0

感謝您的指導 - 我有一個版本的msvcr100d.dll,它不是64位兼容的,我在發佈之後意識到發佈版本的exe運行良好,我用正確的文件替換了這個文件,一切都很好現在。 – Philip

+1

鏈接到http://stackoverflow.com/questions/21356654/vs2012-error-the-application-w as-unable-to-start-correctly-0xc000007b/21356714#21356714其中提到了依賴性沃克,它幫助我找到引用的64位庫。 – MiroJanosik

1

除了上面的正確答案之外,還要檢查你的.manifest-files(或者#pragma comment(linker,/ manifestdependency ...)並確保你的processorArchitecture ='x86' bit and processorArchitecture ='amd64'for x64 code。

+0

根據MSDN'processorArchitecture'應該是ia64的x64代碼。 – Andreas