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

问题描述 投票:6回答:2

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

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

当32位操作系统运行64位可执行文件时,我自己很天真,它会失败,然后运行存根文件。

有没有办法让我的可执行程序32位/ 64位独立?

windows executable 32bit-64bit portable-executable fat-binaries
2个回答
8
投票

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


2
投票

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

您可以编译该程序的单独版本,然后通过另一个可执行文件的脚本进行选择

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

阅读更多:

© www.soinside.com 2019 - 2024. All rights reserved.