将32位和64位应用程序(具有相同代码)编译为一个exe

时间:2018-03-30 14:12:43

标签: c++ winapi hook

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

1 个答案:

答案 0 :(得分:10)

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

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

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