【发布时间】:2019-06-25 10:51:54
【问题描述】:
我想知道确定当前程序集(特别是:以编程方式检查程序本身)是 32 位还是 64 位代码的最简单方法是什么。
当前示例:我正在 Windows/VS 上构建一个 C++ 应用程序,该应用程序构建为 x86 和 x64 可执行文件并单独分发。
在程序中有一个例程,我必须检查当前正在运行的版本(程序必须知道它自己的目标,可以这么说)。
我开始对 Win32 API 的大量调用发疯了,但所有这些都非常繁琐,基本上只是反映了操作系统如何执行程序。我确定必须有一种我不知道的更优雅的方式?您将如何处理?
谢谢!
【问题讨论】:
-
如果是您的代码,您必须知道它是如何构建的,并且可以在代码中设置某种标志。
-
您可以查看
sizeof(int*) -
@NeilButterworth 你是对的,因为这将是一个简单的选择 - 但是我正在寻找一种通用的方式作为检查(意思是:两个平台构建的代码相同)
-
@loopend 在这种情况下,仅检测您的应用程序是否作为 32 位构建运行是不够的。由于 64 位系统可以运行 32 位应用程序,因此您需要检测您的应用程序是专门作为 64 位系统(在 WOW64 模拟器内)上的 32 位进程运行还是在 32 位系统上作为 32 位进程本机运行。使用
IsWow64Process()进行检查。
标签: c++ architecture .net-assembly 32bit-64bit wow64