windows - 什么是 452/0x1C4 CPU?

标签 windows dll

我在共享网络驱动器上有一个 32 位 C++ 可执行文件。我在这个网络上有一堆 64 位 Windows 7 Professional PC。其中一些可以很好地运行我的程序,另一些会产生“应用程序无法正确启动 (0xc000007b)”错误。

看完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。 Dependency Walker 不再将它们标记为 64 位,但它仍然说“发现具有不同 CPU 类型的模块”,并且在这些 DLL 的详分割解中,它以红色标记它们为“452”,而不是 x86。该程序在同一台 PC 上仍然失败并显示 (0xc000007b)。

什么是 452(= 十六进制 1C4)CPU,我如何获得这些 DLL 的真正 x86 版本?

最佳答案

机器类型代码 0x1C4 是 ARM。 this answer中有一张表.

我无法在 Microsoft 的网站上找到任何确认文档,但我可以确认 Visual Studio 2013 中的 ARM 二进制文件的机器类型为 0x1C4。

(至于你是如何结束它们的:如果你在 Program Files 中搜索 Visual Studio 文件夹,它们将是你最先找到的,因为“ARM”排在“x64”或“x86”之前。我的我猜你只是没有注意到有不止一个平台可用。)

关于windows - 什么是 452/0x1C4 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975687/

相关文章:

node.js - 如何使用 Node 获取已知的 Windows 文件夹路径

c++ - 轻量级 Windows 应用程序的最佳开源示例是什么?

c++ - Windows 7 上代码块中的 gdk (gtk3)

c - 从不兼容的指针类型传递参数 1 of 'recievematrix'

java - 无法通过 Java 在 MATLAB 中加载 DLL

sql-server - 拒绝访问来自 Visual Studio 2013 数据连接的 Sql Server mdf 文件

c# - 外部别名与反射与 System.Addin 的多 DLL 测试?

c - 我的程序不断失败 - 加载共享库时出错

c# - 我可以将引用dll放在C#中的特定目录中吗?

c++ - 将静态库封装在动态链接库 (DLL) 中