跨Win32和Win64应用程序

时间:2013-11-28 12:47:09

标签: c++ bits

在我开始学习C ++之前,我总是在脑子里想到这些问题:

1- x86计算机上编译的应用程序是否可以在x64计算机上运行?

2- x64计算机上编译的应用程序是否可以在x86计算机上运行?

3-有什么不同吗?

4-如果1和2是肯定的,那么为什么有些应用程序对每个os位有不同的下载,为什么我得到的一些lib如lua52有一个x64和x86版本只能在指定的os上运行而且在不同的os上有错误?

修改

5-如果我的操作系统是x64,我可以在x86中编译我的应用程序吗?

1 个答案:

答案 0 :(得分:5)

好的,让我们尝试依次解决这些问题

  1. 是的,x86计算机可以交叉编译为x64代码(这是一种常见的做法)。此外,基于x64的操作系统可能具有用于运行x86代码的仿真层(这是Windows为向后兼容所做的事情)

  2. 是的,x64计算机可以交叉编译为x86代码(也是一种常见做法)。从理论上讲,基于x86的操作系统可以有一个用于运行x64代码的仿真层(虽然我不相信这是在实践中完成的)

  3. 在交叉编译的情况下,在x64计算机上编译的x64代码与在x86计算机上编译的相同代码之间没有区别。如果x64正在运行仿真层来运行x86代码,那么它将比运行本机x64代码效率低。如果您想支持x86系统,那么您必须提供x86版本。

  4. 参见(3) - 提供“原生”版本通常会更好。

  5. 是。 - 见(1)和(2)