繁体   English   中英

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

[英]64bit vc++ program seems to run under 32bit mode

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

: 我以为我正在运行64位应用程序,以下代码返回

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

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

更奇怪的事情:

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

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

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

调用LoadLibrary()在c:\\ windows \\ system32 \\ some.dll下加载一个dll效果很好; 在c:\\ windows \\ sysWow64 \\ some.dll下加载一个DLL将失败

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM