跨Win32和Win64应用程序

Cross Win32 and Win64 applications

本文关键字:应用程序 Win64 Win32      更新时间:2023-10-16

在开始学习C++之前,我脑子里一直有这些问题:

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

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

3-有什么不同吗?

4-如果1和2是肯定的,那么为什么有些应用程序的每个操作系统位都有不同的下载,为什么我得到的一些库,比如lua52有x64和x86版本,只能在指定的操作系统上工作,在不同的操作系统中出错?

编辑:

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

好的,让我们依次尝试解决中的这些点

  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)