将64位和32位版本的应用程序转换为相同的二进制文件?

问题描述:

我们正在尝试在64位和32位平台上部署应用程序。有没有办法将两个编译版本的代码放在同一个二进制文件中?Apple和NeXT的fat binaries将64位和32位版本的应用程序转换为相同的二进制文件?

理想情况下,我们可以提供一个.exe,它决定执行哪个版本的代码。我们的目标是Windows XP及更高版本。

一种方法可能是提供一个引导应用程序,用于确定体系结构并选择适当的可执行文件来运行。所以基本上,快捷方式或你的应用程序简单地启动引导程序,然后启动相应的应用程序。如果您的应用程序是Windows服务,这可能会更棘手。

Process Explorer(是sysinternals,现在由Microsoft拥有)执行此操作。它是一个32位应用程序,用于检测64位环境,写出另一个二进制文件并在退出时删除它。 http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

最简单的方法是由安装程序处理这个问题 - 每个二进制文件都有两个版本,并根据哪个系统位置在目标机器上复制必要的版本。