我在共享網絡驅動器上有一個32位C++可執行文件。我在這個網絡上有一堆64位Windows 7 Professional PC。其中一些運行我的程序很好,其他人產生「應用程序無法正確啓動(0xc000007b)」錯誤。什麼是452/0x1C4 CPU?
在閱讀SO問題The application was unable to start correctly (0xc000007b)和其他喜歡它的人之後,我安裝了Dependency Walker。
Dependency Walker發現2個DLL - MSVCP120D.Dll和MSVCR120D.DLL - 在依賴關係樹中爲64位。但是這兩個DLL都與可執行文件位於同一個目錄中。 (那麼爲什麼程序在任何PC上都運行?!)運行帶有/ headers選項的dumpbin證實它們是64位的。
這些DLL隨Visual Studio 2013一起發佈,所以我從那裏複製了新的DLL到我的文件夾。 Dumpbin/headers將新的標識符識別爲「1C4」,而不是像以前那樣的x64。依賴Walker不再將它們標記爲64位,但它仍然表示「找到了具有不同CPU類型的模塊」,並且在詳細討論這些DLL的時候,它將它們標記爲紅色爲「452」,而不是x86。該程序仍然在(0xc000007b)在同一臺PC上失敗。
什麼是452(= hex 1C4)CPU,以及如何獲得這些DLL的真正x86版本?
從程序目錄中刪除DLL並運行[Visual C++ Redistributable Runtime程序包](http://www.microsoft.com/ en-us/download/details.aspx?id = 40784)來自MS網站。 –
@ Ben Voigt好的,我做到了。可再發行組件包報告「安裝成功」我刪除了所有本地DLL用「ms」凝視 - 還有其他DLL專用於應用程序。我仍然在同一臺機器上發生7B錯誤。確實,運行正常的機器都是過去安裝Visual Studio的機器。 – user316117
@Hans Passant - 對不起,但它不是一個錯字。它確實說1C4和依賴性沃克說452(十六進制1C4十進制)。我有一個模糊的回憶,這是一個ARM處理器的代碼,但我無法在網上找到任何確認,我不知道爲什麼應該在我的PC上有ARM DLL。 – user316117