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

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

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

至于苹果的批准,没有人可以给你一个明确的答案,因为苹果对整个过程相当封闭,可能会或可能不符合你的应用程序包括在商店中。 不过,现在已经很清楚,某些types的应用程序是不会削减的; 即:

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

其实,最好是谷歌禁止的应用程序的例子,以获得更好的感觉。 但底线是,这不是你的应用程序做什么,这你的应用程序正在做什么,这将导致它被禁止。

Objective C ++已经被苹果的gcc很好的定义和支持了。

但是你不能混用C ++和客观的C类,这使得这个相当混乱很快。 我认为在很大程度上混合使用C ++和Objective C的项目并不多。

这很大程度上取决于你的库,但是如果(现实的)可行的话,我会把C ++包装到一个C库中,使用extern“C”入口点来实现所有真实的function,并且从你的iPhone应用程序的目标C代码里面链接。

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

只要把你的.m文件改成.mm,一切似乎都行得通。 目标C ++类可以有C ++类的成员(尽pipe我不认为另一种方式适用,这可能是一个问题)。