跨Win32和Win64应用程序

111*_*111 -1 c++ bits

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

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

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

3-有什么区别吗?

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

编辑:

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

ben*_*ous 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)