[英]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.