2015-10-06 86 views
1

我在共享網絡驅動器上有一個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版本?

+0

從程序目錄中刪除DLL並運行[Visual C++ Redistributable Runtime程序包](http://www.microsoft.com/ en-us/download/details.aspx?id = 40784)來自MS網站。 –

+0

@ Ben Voigt好的,我做到了。可再發行組件包報告「安裝成功」我刪除了所有本地DLL用「ms」凝視 - 還有其他DLL專用於應用程序。我仍然在同一臺機器上發生7B錯誤。確實,運行正常的機器都是過去安裝Visual Studio的機器。 – user316117

+0

@Hans Passant - 對不起,但它不是一個錯字。它確實說1C4和依賴性沃克說452(十六進制1C4十進制)。我有一個模糊的回憶,這是一個ARM處理器的代碼,但我無法在網上找到任何確認,我不知道爲什麼應該在我的PC上有ARM DLL。 – user316117

回答

2

機器類型代碼0x1C4是ARM。在this answer有一張桌子。

我一直未能在微軟的網站上找到任何確認文件,但我可以確認Visual Studio 2013中的ARM二進制文件具有機器類型0x1C4。因爲「ARM」在「x64」或「x86」之前排序,所以如果你在程序文件中搜索Visual Studio文件夾,他們是第一個找到的。我的猜測是你根本沒有注意到有多個平臺可用。)

相關問題