【问题标题】:Compile 32 bit and 64 bit application (with same code) into one exe将 32 位和 64 位应用程序(代码相同)编译成一个 exe
【发布时间】:2018-03-30 14:12:43
【问题描述】:

我有 2 个使用全局挂钩的应用程序,它是为 Windows 10(64 位)构建的。一个是 32 位的,另一个是 64 位的。我能够将它们编译成 2 个独立工作的独立 exe 文件。但由于它们具有相同的代码,我希望将它们编译成一个 exe 文件,以同时满足 32 位和 64 位的职责。我可以使用 Visual Studio 或其他方式做到这一点吗?

【问题讨论】:

  • 这是不可能的。
  • 它被称为fat binary,在 Windows 上不受支持。

标签: c++ winapi hook


【解决方案1】:

Windows PE EXE 格式不支持单个二进制文件中的多个 CPU 架构。

SysInternals 工具将 64 位 .exe 作为资源嵌入到 32 位可执行文件中,如果 IsWow64Process 为真,则提取并运行该资源。如果您选择这种技术,您还必须考虑到最近的 ARM64 机器是 Wow64,但只能模拟 32 位 x86 应用程序。

注意:Windows Server Core 可以在没有 Wow64 支持的情况下安装,如果您支持这些系统,您还必须分发 64 位二进制文​​件。

【讨论】:

  • 我猜从技术上讲,EXE 格式支持一个 >= 32 位目标一个 16 位 DOS 目标,但现在这并不重要。
猜你喜欢
  • 2014-01-12
  • 2023-03-31
  • 2014-04-18
  • 2020-11-25
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多