Перекрестные приложения Win32 и Win64

Я всегда думал об этих вопросах, прежде чем начать изучать C ++:

1- Может ли приложение, скомпилированное на компьютере x86, работать на компьютере x64?

2. Может ли приложение, скомпилированное на компьютере x64, работать на компьютере x86?

3- Есть ли разница?

4- Если 1 и 2 — да, то почему некоторые приложения имеют разные загрузки для каждого бита ОС, и почему у некоторых библиотек, которые я получил, как у lua52, есть версии x64 и x86, которые работают только на указанной ОС и ошибки на разных ОС?

РЕДАКТИРОВАТЬ:

5- Могу ли я скомпилировать свои приложения в x86, если у меня ОС x64?

-1

Решение

Хорошо, давайте попробуем обратиться к этим пунктам по очереди

  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)

5

Другие решения

Других решений пока нет …