- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想尝试为 iOS 和 Android 设备编写和编译 C++ 代码。我使用 Xcode 已经有一段时间了(我正在为 MacOS 和 Windows 编写 c++ 代码)。所以我想将 Xcode 用于我的目的。
问题是我不知道如何为 Android 设备和 iPad/iPhone 编译 C++ 代码。我想为 iOS 和 Android 使用跨平台解决方案,但不想使用 Marmalade (c++) 或其他框架。
是真的还是假的? :) 有教程或其他有用的 Material 吗?
最佳答案
您绝对可以在 iOS 和 Android 上使用 C++。我已经为两者编写了自己的游戏引擎。
Xcode 是 iOS 的普通 IDE,原生支持“Objective-C++”开发(编译器同时支持 Objective-C 和 C++)。您将需要在 Objective-C 中编写一个瘦包装器来与操作系统交互,但如果您愿意,您可以在 C++ 中编写其他所有内容。如果您下载 Xcode 命令行工具,您也可以从脚本构建。
Eclipse 是适用于 Android 的常用 IDE,如果您下载 NDK您可以使用 JNI Java和C++之间的接口(interface)。与 iOS 非常相似,您至少需要一个 Java 包装器才能与操作系统交互。
但是,您不仅限于 Eclipse 和 Xcode。例如,您可以使用 emacs和/或雇用CMake允许您尝试并巩固项目设置。 Emacs 是一个非常强大和灵活的 IDE,但它的学习曲线非常陡峭,而且安装起来也不是很简单。如果您在 Mac 上执行此操作,我会推荐 emacsformacosx和安装ECB和 autocomplete也是。 CMake 基本上是一个跨平台构建系统,它允许您从一个源代码树构建许多不同的项目文件(Visual Studio、Xcode、Eclipse 等)。就像 emacs 一样,它非常强大,但学习曲线有点陡峭。如果您想立即加入,您可能希望同时使用 Xcode 和 Eclipse。如果您在 PC 上进行开发,则需要 Mac VM 或 Hackintosh 才能使用 Xcode 和 cygwin 才能使用 NDK for android(Macbook Pro 用户可以轻松享受乐趣)。
原生 Android 开发肯定要困难得多。您不仅要应对更多的设备 segmentation ,而且 native 调试也不是很直接。您必须在设备上运行 GDB 服务器并与其连接以设置断点,许多人从命令行执行此操作。我听说有些人使用 Tegra Tools 取得了成功如果您想要一个基于 GUI 的 IDE,则适用于 Eclipse。
我绝对建议您首先在 iOS 上进行开发,因为您可以从 IDE 中使用更强大的工具。您可以轻松跟踪内存泄漏、分析代码、设置断点;) 等。一旦您在 iOS 上开发了一项功能,您就可以与 .mk 文件和其他 Android 原生开发的优点搏斗。
以下是有关 iOS 核心对象和生命周期的一些信息:
对于 Android:
只要您能很好地使用操作系统并尊重应用程序的生命周期,您就可以自由地调用 C++ 逻辑。您可以直接使用 iOS 执行此操作,但使用 Android 您必须通过 JNI 编码调用。如果您封装平台细节,您可以在两个平台之间共享 C++ 逻辑。
我是 C++ 的忠实拥护者,但使用它的选择确实取决于这些平台的情况。 C++ 不是这些平台的流行选择,因此您不会找到那么多文档(大部分时间是您自己)。如果您对 C++ 不是很熟悉,那么复杂度可能会上升一点(您熟悉 RAII、design patters、STL 吗?)。
以下是一些可能有意义的情况:
我并不是说您必须在这些情况下使用 C++,因为许多人都使用 Objective-C 开发游戏。我只是说,如果您需要充分利用硬件,或者您只是想要更便携的东西,这可能是需要考虑的事情。
关于android - 为 iOS 和 Android 编译 C++ 代码 (Xcode)。这是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211277/
我正在观看来自 iTunes U. 的视频讲座,其中讲师展示了如何使用 Xcode 的调试器部分并能够将该窗口从主窗口拉开。 不幸的是,视频显示了如何在 Xcode3 中执行此操作的说明。如何在 Xc
现在我正在开发一个使用 Markdown 的静态网站。我不想在 SublimeText 中编辑文件,而是想在 Xcode 中编辑它们。我可以在 Xcode 中打开各个文件,但我想打开整个静态站点目录并
现在我正在开发一个使用 Markdown 的静态网站。我不想在 SublimeText 中编辑文件,而是想在 Xcode 中编辑它们。我可以在 Xcode 中打开各个文件,但我想打开整个静态站点目录并
我真的厌倦了其他用户的项目错误,因为 XCode 的默认类引用类型是“相对于 XCode 文件夹”。我知道您可以将其更改为“相对于封闭组”,这就是我们的项目,但是任何时候有人创建一个新的类文件并且忘记
我对 Xcode 一无所知,除了它是来自 Apple 的开发人员界面,它实际上来自 OSX CD,它也用于创建 iPhone 应用程序。 我也知道它有一个 Applications 文件夹,里面装满了
更新 Xcode(从 7.2 到 7.2.1)后,XcodeServer 无法运行 Xcode Service。当我选择更新的 Xcode 时,提示消息:Enable Accessibility ac
我很难找到有关新 XCode 布局的信息。如何查看源文件的反汇编,而不仅仅是 C++ 代码? 最佳答案 在 Xcode 4.2(和 Xcode 5)中,您可以通过以下方式查看文件的汇编或反汇编: 显示
我在 XCode 中为我的项目添加了一个文件夹并将其命名为 Themes,它将用于存储我的 iPad 应用程序的主题。在那下面我有红色、蓝色等等。 它们出现在 XCode 中。但是当我查看物理文件夹时
作为我之前 How can I create a reference cycle using dispatchQueues? 的后续: 对于强引用(会造成泄漏,但不是循环引用),例如Timer、Dis
我有一台 macbook air,我去商店安装 Xcode 7.3 并点击更新 App 按钮,然后出现了一个加载图标,但等待 30 分钟后什么也没发生。我从商店成功安装了 simple recorde
我的项目现在有一个project.xcworkspace/xcshareddata目录。 Xcode在project.xcworkspace/xcshareddata目录中存储什么? 最佳答案 xcs
我不经常使用 XCode 进行开发,最近 MacPorts 告诉我我需要获得 3.1 才能使包工作。我去了苹果,他们为我提供了最新版本,结果只适用于 OSX 6。因为我有 OSX 5,它对我没有任何帮
有谁知道如何强制 Xcode 停止运行。我更新到 6.2 但现在它不能正常工作。我需要退出 Xcode 才能完成更新或卸载并重新安装。菜单中的相当 Xcode 不可用。无法将其拖到垃圾箱,因为它说它仍
我最近从我的项目中删除了一些旧的测试类并删除了文件。正如预期的那样,文件被移到垃圾箱并在 git 中显示为已删除。 不幸的是,测试类和它们定义的测试用例继续出现在测试导航器中。我已经尝试过常见的疑点,
Xcode 中的场景编辑器显示大小但不显示单位。它是以英寸为单位的尺寸还是以米为单位的尺寸? 例如,当我选择一个节点时,例如一个盒子,当我在节点检查器中检查它的属性并在“边界框”旁边的“变换”部分检查
只想知道 xcode 项目中事件可执行文件的目的是什么? 谢谢 索拉布 最佳答案 自己找到了..希望它会帮助某人。 您可以在其中运行和测试软件产品的可执行环境。可执行环境定义了应该用来运行产品的程序。
刚回到我的办公 table ,Xcode 一直在文件中突出显示/强调空白区域。如果我输入一些东西它就会消失,但如果我切换标签并回来,它们会重新出现。 更新:这不是由“显示隐形”选项引起的。那看起来不一
我首先注意到这一点 Cmd-/偶尔拒绝为注释取消注释的代码行工作。但是现在(刚刚使用 XCode 4.1,虽然这可能无关)它发生在 Cmd-B建立。 我无法弄清楚我正在做什么导致这种情况,或者是否有任
我不太了解Xcode 4的工作区的实用程序。它们的用途是什么,它们如何帮助Xcode进行开发? 最佳答案 例如。您有一个在两个应用程序中使用的库。您很可能为此库拥有一个自己的项目,对吗?现在,您可以自
我正在关注一个应用程序教程,它说: “接下来,在 Xcode 应用程序项目目录的根目录下创建一个空文件,并调用该文件 Podfile。使用您喜欢的文本编辑器打开它,然后在其中粘贴以下行:” 我很困惑这
我是一名优秀的程序员,十分优秀!