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

时间:2016-08-04 06:30:48

标签: windows executable 32bit-64bit portable-executable fat-binaries

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

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

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

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

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

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

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

了解更多: