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

8

我能在iPhone应用程序中集成现有的C++库吗?

3个回答

4
虽然在Objective-C中不能混合使用C++类,但可以通过使用Objective-C++将它们混合使用,并且我相信这也得到了iPhone的支持。将C++代码集成到iPhone应用程序中不应该是一个问题,但如果您想保险起见,那么您应该将代码构建为库,然后从iPhone应用程序链接到它;这样您就不需要担心混合使用Obj-C代码和C++类。
至于苹果的批准,没有人能给出明确答案,因为苹果对整个过程非常封闭。但现在已经很清楚了,某些类型的应用程序不会被通过;即:
- 滥用或扭曲iPhone SDK的应用程序。例如:设置设备的亮度。 - 使用过多的带宽或系统资源(不必要地消耗电池寿命)。 - 在某个地方复制了苹果的功能(例如:制作邮件客户端、Web浏览器等)。 - 滥用价格层次和计划。
实际上最好只需搜索一下被禁止的应用程序示例,以更好地了解情况。但重点是,您的应用程序被禁止与它是如何做某事无关,而与它正在做什么有关。

“在某个地方复制苹果功能”,这很有趣,因为不久前,浏览器供应商对IE在Windows上垄断并不太满意。我听说当时还涉及到一些诉讼。但是,嘿,这和苹果完全不同。 - lurscher

3

Objective C++由苹果的gcc定义和支持。

但是你不能混合使用C++和Objective C类,这会使得代码变得非常混乱。我认为很少有项目在很大程度上混合使用C++和Objective C。

这取决于你的库,但如果(现实)可行,我建议将C++封装在一个C库中,使用extern "C"来进行所有真正功能的入口点,并从你的iPhone应用程序中链接它。


2
我刚开始学习iPhone开发,但是我已经成功地使用了一些现有的C++库而没有做任何更改。我将一些已经编写好的OpenGL类带入进来,它们能够正常工作,因为iPhone上的gl库都是C而不是Obj-C。例如,我使用Obj-C获取资源、大小等信息将纹理加载到GLubyte数组中,然后将这些值传递给我的C++代码,该代码执行gl调用以创建纹理。同样的方法也适用于加载几何图形。
只需将.m文件更改为.mm,一切似乎都能正常工作。Objective C++类可以具有C++类成员(虽然我认为反过来不适用,这可能会成为一个问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接