在 Windows 2008 R2 服务器(服务器核心安装)中 wow64 不再是必需的组件。
我可以使用与 64 位应用程序相同的源代码编译 32 位应用程序(这里和那里有一些 ifdef)。
是否有一种工具可以将我的应用程序的两个版本放在一个可执行文件中,以便我的 32+64 位应用程序可以在纯 32 位 Windows和仅 64 位 Windows 上运行?
请注意,我不是在谈论打包器,因为打包器本身是 32 位或 64 位的。
在 Windows 2008 R2 服务器(服务器核心安装)中 wow64 不再是必需的组件。
我可以使用与 64 位应用程序相同的源代码编译 32 位应用程序(这里和那里有一些 ifdef)。
是否有一种工具可以将我的应用程序的两个版本放在一个可执行文件中,以便我的 32+64 位应用程序可以在纯 32 位 Windows和仅 64 位 Windows 上运行?
请注意,我不是在谈论打包器,因为打包器本身是 32 位或 64 位的。
不可以。EXE 的标头标有 EXE 中包含的代码所支持的处理器架构。使用 DUMPBIN.EXE -HEADERS 进行探索。
EXE 报告“机器”类型为:x86:0x14C x64:0x8664 ARM:0x1C4
如果你想部署你的应用程序,构建一个 x86 版本,一个 x64 版本(ARM 稍后与 Win8 一起提供)并编写一个安装包 (MSI),它可以动态检查你正在安装应用程序的机器的体系结构,并放置一个或两个应用程序。例如,Adobe 现在就是这样在最新的 Flash 播放器下载中分发 Flash x86 和 Flash x64。
如果您想构建一个真正通用的二进制文件,请在 .NET 中构建它并将其标记为针对“任何”CPU。然后,您的应用程序将被 JITted 到您机器的体系结构(或在加载项组件的情况下的托管进程)。