将C ++库集成到iPhone应用程序中

时间:2008-11-21 12:59:18

标签: c++ ios xcode

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

3 个答案:

答案 0 :(得分:4)

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

至于Apple的批准,没有人可以给你一个明确的答案,关于你的应用程序是否可以包含在商店中,因为Apple对整个过程非常关闭。但是,现在已经非常清楚,某些类型的应用程序无法实现这一目标。即:

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

实际上,最好只是谷歌搜索被禁止的应用程序的例子,以获得更好的感觉。但最重要的是,它不是 你的应用程序如何做某事,它是你的应用正在做什么会导致它被禁止。

答案 1 :(得分:3)

目标C ++已得到Apple的gcc的明确定义和支持。

但是你不能混合使用C ++和客观的C类,这使得它相当混乱。我不认为在野外有很多项目可以将C ++和Objective C混合在一起。

这在很大程度上取决于您的库,但如果(实际上)可行,我将C ++包装在C库中,使用extern“C”入口点获取所有实际功能,并从您的目标C代码中链接到您的库iphone app。

答案 2 :(得分:2)

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

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