当前位置:  开发笔记 > 开发工具 > 正文

确保为32位Windows编写的程序与64位Windows兼容

如何解决《确保为32位Windows编写的程序与64位Windows兼容》经验,为你挑选了1个好方法。

虽然我的理解是没有一个根本原因为32位硬件/操作系统编写的程序不能在64位硬件/操作系统上运行,但实际上,我发现很多程序都是针对32位版本的Windows而不是适用于64位版本的Windows.例子包括许多流行的安全实用程序(大多数产品来自Norton和Check Point的Zone Alarm)和几款游戏(我一直试图让侠盗猎车手4运行几周,但无济于事 - 当然,这可能与GTA4相关的任何其他问题有关,但这既不在这里也不在那里.

我听说程序的不兼容可能是因为不想从"Program Files(x86)"文件夹运行这么简单,但是还有什么其他原因?为什么为32位系统编写的病毒扫描程序或防火墙不能在64位系统上运行?当一切理论上都向后兼容时,为什么游戏不会运行?



1> Die in Sente..:

这个帖子有很多错误的信息.

在64位窗口上运行32位应用程序时:

当应用程序尝试安装内核模式驱动程序时,会出现大多数兼容性问题.无法在64位操作系统上安装32位驱动程序.这肯定是防火墙的问题.它试图挂钩到TCP/IP驱动程序堆栈.

没有仿真器!32位目标代码由cpu完全本机地全速执行.

不支持旧的16位代码.这打破了很多安装人员.

访问正确的文件夹通常不是问题.当32位程序打开文件时,比如%windir%\ system32 \,操作系统会自动将其重定向到%windir%\ syswow64.对于注册表的某些部分也是如此.这里有一些潜在的陷阱,但它们通常是假设各种WINAPI Get ... Directory()函数返回它们在Windows 95中执行的相同字符串.

无论是10年前还是昨天编译,那么C/C++指针仍然是32位(4字节)和所有假设的代码 - 包括SendMessage()! - 仍然有效.在您开始转换为64位编译器之前,8字节指针问题不会出现.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有