我在共享网络驱动器上有32位C ++可执行文件。我在这个网络上有一堆64位Windows 7专业版PC。他们中的一些人运行我的程序很好,其他人生成"应用程序无法正确启动(0xc000007b)"错误。
在阅读了SO问题The application was unable to start correctly (0xc000007b)和其他类似问题后,我安装了Dependency Walker。
Dependency Walker在依赖树中识别出2个DLL - MSVCP120D.Dll和MSVCR120D.DLL - 64位。但是这两个DLL与可执行文件位于同一目录中。 (那么为什么程序在任何PC上运行?!)运行dumpbin并使用/ headers选项确认它们是64位。
这些DLL随Visual Studio 2013一起发布,因此我将新的DLL从那里复制到我的文件夹中。 Dumpbin / headers将新的标识符标识为" 1C4"不像之前那样的x64。 Dependency Walker不再将它们标记为64位,但它仍然表示"找到了具有不同CPU类型的模块"在这些DLL的详细分析中,它将它们标记为红色为" 452"而不是x86。程序仍然在同一台PC上失败(0xc000007b)。
什么是452(= hex 1C4)CPU以及如何获得这些DLL的真正x86版本?
答案 0 :(得分:2)
机器类型代码0x1C4是ARM。 this answer中有一个表格。
我无法在微软的网站上找到任何确认文档,但我可以确认Visual Studio 2013中的ARM二进制文件的机器类型为0x1C4。
(关于你如何与他们结交:他们是你在Program Files中搜索Visual Studio文件夹时会发现的第一个,因为" ARM"之前的任何一个" x64"或" x86"。我的猜测是你根本没有注意到有多个平台可用。)