1

我是一名 C++ 开发人员,我对 Cocos2d-x 框架很感兴趣。我知道你可以使用该框架编写 C++ 代码,为不同的平台编译它,就是这样,你在 Windows、Android、iOS 上都有你的 2D。这太棒了,但我不明白它是如何完成的,因此,我担心我为一个平台所做的某些事情在另一个平台上不起作用。要详细说明,我想提出我的担忧。为了做到这一点,让我们澄清一下什么是代码compiling,什么是running代码。

  • 为一个平台编译 C++ 代码是什么意思(平台是 OS + CPU 架构)?这意味着 C++ 源代码映射到具体 CPU 架构可以理解的指令。最后一组指令被打包成一个可执行文件,该文件对于具体的操作系统是可以理解的,这意味着一个或多个具体的 SO 或了解如何处理可执行文件的操作系统可以运行它。此外,我们不应该忘记,在可执行文件包含的指令集中可能存在系统调用。这也特定于操作系统。

  • 运行可执行文件是什么意思?这意味着操作系统知道特定可执行文件的格式。当您发出运行命令时,操作系统会将其加载到虚拟内存中并开始逐步执​​行该 CPU 指令集。(非常原始,但总的来说我猜是这样的。)

现在回到 COSOS2D-X。如何编译 C++ 代码,使其能够被不同的操作系统和不同的 CPU 识别和加载。我们使用什么机制来获取适当的 .apk、.ipa 或 .exe 文件。在使用系统调用或特定于处理器的调用时,我们是否会陷入陷阱?一般来说,所有这些问题是如何解决的?请解释这个过程,例如,对于 Android 或者它对 iOS 也很好。:)

4

1 回答 1

1

Cocos2d-x 为所有目标操作系统和平台提供了 95% 的相同代码。它有 5% 的代码是为具体平台编写的。例如,有一些适用于 Android 的 Java 源代码。还有一些适用于 iOS 的 Obj-C 文件。还有一些 C++ 代码用于不同的平台。#define 用于分隔此代码。此类代码的示例是处理用 C++ 编写但因平台而异的文件。

生成适当的输出文件是用于目标平台的编译器和 SDK 的责任。例如带有 clang 编译器的 xCode 将生成 iOS 构建。而带有 gcc 的 Android NDK 将构建 apk。

于 2013-08-03T20:00:13.563 回答