Я разработчик C++, меня интересует фреймворк Cocos2d-x. Я знаю, что вы можете написать код на C++ с помощью фреймворка, скомпилировать его для разных платформ и все, у вас есть свое 2D на Windows, Android, iOS. Это удивительно, но я не понимаю, как это делается, и, следовательно, я беспокоюсь, что то, что я сделал для одной платформы, не будет работать на другой. Чтобы вдаваться в подробности, я хотел бы открыть свои опасения. Для этого давайте разберемся, что такое compiling
и что такое running
код.
Что значит скомпилировать код C++ для платформы (платформа — это архитектура ОС + ЦП)? Это означает, что исходный код C++ сопоставляется с инструкциями, понятными для конкретной архитектуры процессора. И окончательный набор инструкций упакован в исполняемый файл, который понятен для конкретной ОС, что означает, что конкретная SO или ОС, которые понимают, как обращаться с исполняемым файлом, могут его запустить. Также не следует забывать, что в наборе инструкций, которые содержит исполняемый файл, могут быть системные вызовы. Что также специфично для ОС.
Что значит запустить исполняемый файл? Это означает, что ОС знает формат конкретного исполняемого файла. Когда вы даете команду запуска, ОС загружает ее в виртуальную память и начинает выполнять заданные инструкции процессора шаг за шагом. (Очень сыро, но в целом это так, я думаю.)
Теперь вернемся к COSOS2D-X. Как можно скомпилировать код C++ так, чтобы его могли распознавать и загружать разные ОС и разные процессоры. Какие механизмы мы используем для получения соответствующих файлов .apk, .ipa или .exe. Есть ли ловушка, в которую мы можем попасть при использовании системных вызовов или вызовов, специфичных для процессора? Вообще как решаются все эти проблемы? Пожалуйста, объясните процесс, например, для Android или было бы здорово и для iOS. :)