8

我可以将现有的 C++ 库集成到 iPhone 应用程序中吗?

4

3 回答 3

4

虽然确实不能在 Objective-C 中混合 C++ 类,但你可以将它与 Objective-C++ 混合,我相信 iPhone 也支持它。将 C++ 代码与 iPhone 应用程序集成应该不是问题,但如果您想保持安全,那么您应该将代码构建为库,然后从您的 iPhone 应用程序链接到它;这样您就不必担心混合 Obj-C 代码和 C++ 类。

至于 Apple 的批准,没有人可以给你一个明确的答案,因为 Apple 对整个过程相当封闭。但是,现在很明显,某些类型的应用程序不会成功。即:

  • 以 Apple 不喜欢的方式“滥用”或扭曲 iPhone SDK 的应用程序。IE,设置设备亮度
  • 使用过多的带宽或系统资源(不必要地耗尽电池寿命)
  • 在某处复制 Apple 的功能(即,制作邮件客户端、网络浏览器等)
  • 滥用定价层和方案

实际上,最好只用谷歌搜索被禁应用的示例,以便更好地了解它。但最重要的是,这不是您的应用程序如何做某事,而是您的应用程序正在做什么会导致它被禁止。

于 2008-11-21T14:38:40.033 回答
3

Apple 的 gcc 对 Objective C++ 进行了很好的定义和支持。

但是你不能混合 C++ 和目标 C 类,这使得这相当混乱。我不认为有很多项目在很大程度上混合了 C++ 和 Objective C。

这在很大程度上取决于您的库,但如果(实际上)可行,我会将 C++ 包装在 C 库中,对所有实际功能使用外部“C”入口点,并从您的目标 C 代码中为您的 iPhone 应用程序链接。

于 2008-11-21T13:07:03.743 回答
2

我刚刚开始进行 iPhone 开发,但我已经能够成功使用一些现有的 C++ 库而无需任何更改。我带来了一些我已经编写好的 OpenGL 类,它们工作得很好,因为 iPhone 上的 gl 库都是 C 而不是 Obj-C。例如,我正在使用 Obj-C 将纹理加载到 GLubyte 数组中以获取资源、大小等,然后将这些值传递给我的 C++ 代码,该代码执行 gl 调用以创建纹理。这同样适用于加载几何。

只需将您的 .m 文件更改为 .mm ,一切似乎都可以正常工作。目标 C++ 类可以具有 C++ 类的成员(尽管我认为其他方式不适用,这可能是一个问题)。

于 2009-06-04T21:22:13.423 回答