c - 如何创建包含 32 位和 64 位二进制文​​件的应用程序,并在操作系统上运行相应的应用程序?

标签 c windows visual-studio

我制作了一个应用程序,我必须编译它的 32 位和 64 位版本。我看到一些应用程序,例如 ProcessExplorer,其行为如下。在 32 位操作系统上,它运行 32 位应用程序,但在 64 位操作系统上,它会提取同一 exe 的 64 位版本,并将执行该应用程序。那么我如何从我的应用程序中制作这样的应用程序呢?我应该在 Visual Studio 中进行哪些设置?

最佳答案

流程资源管理器的工作方式如下:

  • 您下载了一个 32 位可执行文件。
  • 当您在 32 位操作系统上运行该可执行文件时,就这样了。
  • 当您在 64 位操作系统上运行该可执行文件时,32 位进程会在启动时检测到该可执行文件,并将 64 位可执行文件提取到磁盘,并将其作为资源存储在 32 位进程中。然后它运行该 64 位可执行文件。

Visual Studio 中没有任何设置可以为您自动执行该过程。你必须自己写那部分。您可以有一个首先构建 64 位版本的构建过程。然后您可以将该可执行文件编译成链接到 32 位进程的资源。这就是您运送的内容。

我自己并不相信这值得所有的努力。就我个人而言,我倾向于发布两个不同的可执行文件,但我想只有您知道自己的要求。

关于c - 如何创建包含 32 位和 64 位二进制文​​件的应用程序,并在操作系统上运行相应的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662969/

相关文章:

c# - MSMQ 中的多个队列(性能下降)

database - Windows 8.1 上的 PostgreSQL 安装 - 数据库集群初始化失败

windows - 什么是子类化和 API Hook ?

visual-studio - 在 Visual Studio 2019 中,通过测试的绿色和白色复选图标有什么区别?

c++ - 操作系统全局描述符表编译错误

c++ - 如何使用 RegOpenKeyEx 创建或查询注册表

c - 使用 getchar() 存储数字

c++ - 我可以在具有相同名称的本地命名空间中创建共享内存(使用 CreateFileMapping)吗?

c: 无需转换即可更改变量类型

c# - 使 Visual Studio 设计器忽略公共(public)属性