有什么方法可以构建 VC++ 项目,以便它创建的 dll/exe 在 32 位 Windows 操作系统上作为 32 位应用程序工作,在 64 位 Windows 操作系统上作为 64 位应用程序工作(不是在 WOW64 中).
我知道对于使用/ANYCPU 选项的 C# 应用程序来说这是可能的。
最佳答案
CLR 对/ANYCPU 选项有特殊的加载器支持。
如果您真的想为本地人做这件事,最好的方法是:
- 为 32 位和 64 位构建二进制文件
- 作为构建 32 位二进制文件的一部分,包括 64 位二进制文件作为资源
- 在 32 位机器上,只运行 32 位二进制文件
- 在 64 位机器上,当 32 位二进制文件运行时,解压 64 位二进制资源,将其写入磁盘,然后从那里运行
这就是 Sysinternals 的方式工具工作(将 Process Explorer 下载到 64 位机器上并运行它:您会看到它将 procexp64.exe 写入磁盘,然后从那里运行它)。这是一个 hack,但它有效。
关于c++ - 我们可以创建一个 VC++ 可执行文件,它可以在 32 位和 64 位 Windows 上本地运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3590880/