如何将 64 位和 32 位可执行文件绑定为一个?

How to bind 64-bit and 32-bit executable into one?

好吧,我的想法是通过某种方式将 64 位和 32 位 Windows 可执行文件绑定到一个应用程序中,所以如果它没有 运行 64 位版本,它就会试试 32 位的。

我正在阅读有关 PE 的资料,并了解了一些有关 MS-DOS 实模式存根的知识,它说明了它如何调用应用程序(通常是一条错误消息)。但每次我尝试研究 MS-DOS Real Mode Stub 时,它似乎只显示错误消息。所以我的想法是用我的 32 位应用程序覆盖 STUB。

我天真地认为 32 位操作系统 运行 64 位可执行文件会失败,然后 运行 存根文件。

有没有办法让我的可执行文件 32-bit/64-bit 独立?

在 MacOS、Linux 和 DOS(或混合 DOS-Windows)中有 fat binaries,但没有 32 位和 64 位 Windows

您可以编译程序的不同版本,然后 select 通过另一个可执行文件的脚本

另一种方法是在安装时只安装所需的版本。这被许多程序使用,如 CCleaner。安装程序是一个 32 位应用程序或像 .NET 这样的通用应用程序,因此它可以 运行 在任何地方。如果它检测到 64 位 Windows 则它只安装 64 位版本,与 32 位版本相同。

阅读更多:

您无法创建包含 x86x64 代码的单个可执行文件。但是,您可以创建单独的 32 位和 64 位应用程序,将 x64 应用程序打包到 x86 应用程序资源中。在程序启动时,您可以检查您是否正在使用 IsWow64Process 运行ning x64 环境,然后如果需要,解压您的 x64 版本并 运行 它