c++ - 我们可以创建一个 VC++ 可执行文件,它可以在 32 位和 64 位 Windows 上本地运行吗?

标签 c++ visual-c++ visual-studio-2010 compatibility 32bit-64bit

有什么方法可以构建 VC++ 项目,以便它创建的 dll/exe 在 32 位 Windows 操作系统上作为 32 位应用程序工作,在 64 位 Windows 操作系统上作为 64 位应用程序工作(不是在 WOW64 中).

我知道对于使用/ANYCPU 选项的 C# 应用程序来说这是可能的。

最佳答案

CLR 对/ANYCPU 选项有特殊的加载器支持。

如果您真的想为本地人做这件事,最好的方法是:

  1. 为 32 位和 64 位构建二进制文件
  2. 作为构建 32 位二进制文​​件的一部分,包括 64 位二进制文​​件作为资源
  3. 在 32 位机器上,只运行 32 位二进制文​​件
  4. 在 64 位机器上,当 32 位二进制文​​件运行时,解压 64 位二进制资源,将其写入磁盘,然后从那里运行

这就是 Sysinternals 的方式工具工作(将 Process Explorer 下载到 64 位机器上并运行它:您会看到它将 procexp64.exe 写入磁盘,然后从那里运行它)。这是一个 hack,但它有效。

关于c++ - 我们可以创建一个 VC++ 可执行文件,它可以在 32 位和 64 位 Windows 上本地运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3590880/

相关文章:

c++ - 应用程序卡住?

c++ - .lib 不是有效的 Win32 应用程序 - Visual Studio 2015

c++ - Boost::multi_array——引用太慢

c++ - 将 decltype 与虚成员函数指针一起使用

c++ - 放置外部虚拟表

vb.net - LINQ 存储过程返回值到字符串数组?

c++ - 如何为unicode字符制作小写字母

c++ - 等待主线程直到条件

c++ - Visual Studio 2010 - 优化大小或速度

c# - 我在 vs2008 中学习 C#,而 vs2010 可用。我错过了什么吗?