是否有一个工具可以将32位+ 64位应用程序组合在一起并将它们打包在一个32 + 64位应用程序中

Joh*_*ica 3 language-agnostic windows executable 32bit-64bit native-code

在Windows 2008 R2服务器(服务器核心安装)中,wow64不再是必需组件.

我可以使用与64位应用程序相同的源代码编译32位应用程序(在这里和那里有一些ifdef).

有没有一个工具可以将我的应用程序的两个版本放在一个可执行文件中,这样我的32 + 64位应用程序就可以在纯32位Windows 64位Windows上运行?

请注意,我不是在谈论打包器,因为打包器本身将是32位或64位.

Ric*_*ner 6

不可以.EXE的标头标有EXE中包含的代码支持的处理器体系结构.使用DUMPBIN.EXE -HEADERS进行探索.

EXE报告"机器"类型为:x86:0x14C x64:0x8664 ARM:0x1C4

如果要部署应用程序,请构建适用于x86的版本(适用于x64的ARM版本(ARM稍后使用Win8)和作者安装程序包(MSI),该程序包可以动态检查要安装应用程序的计算机的体系结构,并放下一个或两个应用程序.例如,这就是Adobe现在在最新的Flash播放器下载中分发Flash x86和Flash x64的方式.

如果您想构建一个真正的通用二进制文件,请在.NET中构建它并将其标记为目标"任何"CPU.然后,您的应用程序将被JIT绑定到您的计算机的体系结构(或者在加载项组件的情况下为托管进程).

  • 当然,这个WAS可能是最后一次...... PE格式包括一个16位DOS模式入口点的字段...默认情况下填充了一个打印的存根"此应用程序无法在DOS模式下运行. " 但可以用16位版本的应用程序替换.太糟糕了,他们没有那样做. (2认同)
  • @Ben Voigt:实际上,它只有*两个*前几天(DOS + Win16二进制).您不能打包Win16 + Win32二进制文件或Win32 + Win64二进制文件. (2认同)