64位VC 程序似乎在32位模式下运行

64bit vc++ program seems to run under 32bit mode

本文关键字:32位 模式 运行 VC 程序 64位      更新时间:2023-10-16

我在Visual Studio 2010中创建了一个64位C 项目(Windows 7 64bit);

我以为我正在运行一个64位应用程序,并且返回的代码 true

bool is64bit = (sizeof(void*)==8);

但是,如果我调用函数 IsWow64Process,它返回 false ...

更奇怪的事情:

  • 调用LoadLibrary()c:windowssystem32some.dll下加载DLL
  • c:windowssysWow64some.dll下加载DLL会失败(错误代码193:某些dll不是有效的Win32应用程序)

所有这些失败都表明该应用程序在32位模式下运行,但这是反对事实,指针类型为8字节长度

我很困惑,任何帮助都将不胜感激!

调用LoadLibrary()在C下加载DLL: Windows System32 Some.dll效果很好;在C下加载DLL: Windows Syswow64 some.dll将失败

您所说的一切都表明您正在运行64位。

在Windows 64bit中,System32文件夹包含DLL的 64位版本SysWow64文件夹包含 32位版本。当IsWow64Process返回true时,这意味着您是64位OS上的32位应用程序。

这与文件夹中的名称所建议的相反,这可能是为什么这似乎令人困惑的原因。基本上,SysWow64文件夹是WOW64下使用的32个位版本,它是" Windows 32位64位上的Windows 32位" - 基本上,您在运行32bit 时使用WOW64 DLLS 运行64位时正常的DLL。

Ctrl-Shitf-Esc运行任务管理器应用程序。在"过程"选项卡中,您将以每32位进程的名称看到*32标签。这是检查过程的最简单方法之一。