【问题标题】:Integrate C++ library into iPhone app将 C++ 库集成到 iPhone 应用程序中
【发布时间】:2010-09-23 10:44:00
【问题描述】:

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

【问题讨论】:

    标签: c++ ios xcode


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • “在某处复制苹果功能”,这很有趣,因为在很久以前,浏览器供应商对 IE 在 Windows 上的垄断感到不太高兴。我听说有一些诉讼涉及。但是,嘿,这和苹果完全不一样
      【解决方案3】:

      Objective C++ 被 Apple 的 gcc 很好地定义和支持。

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-23
        • 2012-02-04
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多