gpt4 book ai didi

c++ - 64位的vc++程序似乎在32位模式下运行

转载 作者:可可西里 更新时间:2023-11-01 15:52:30 25 4
gpt4 key购买 nike

我在 Visual Studio 2010 中创建了一个 64 位的 c++ 项目(在 Windows 7 64 位下);

我以为我正在运行一个 64 位应用程序,下面的代码返回了 true:

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

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

更奇怪的事情:

  • 调用LoadLibrary()加载c:\windows\system32\some.dll下的dll效果很好
  • 加载 c:\windows\sysWow64\some.dll 下的 dll 将失败(错误代码 193:some.dll 不是有效的 win32 应用程序)

所有这些失败表明应用程序在 32 位模式下运行,但这与指针类型是 8 字节长度的事实背道而驰

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

最佳答案

calling LoadLibrary() to load a dll under c:\windows\system32\some.dll works well; loading a dll under c:\windows\sysWow64\some.dll will fail

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

在 Windows 64 位中,System32 文件夹包含 64 位版本 的 DLL,而 SysWow64 文件夹包含 32位版本。当 IsWow64Process 返回 TRUE 时,这意味着您是 64 位操作系统上的 32 位应用程序。

这与文件夹中的名称所暗示的相反,这可能就是为什么这看起来令人困惑的原因。基本上,SysWow64 文件夹是在 WoW64 下使用的 32 位版本。 ,即“Windows 64 位上的 Windows 32 位”- 基本上,在运行 32 位时使用 WoW64 DLL,在运行 64 位时使用普通 DLL。

关于c++ - 64位的vc++程序似乎在32位模式下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13036139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com