你能在Cocoa(Obj-C)项目中使用C ++库吗?

时间:2011-07-01 05:06:35

标签: c++ objective-c cocoa openframeworks cinder

我正在考虑学习Objective-C和Cocoa,主要是为了使用Apple的工具和GUI。

但是,我还想做一些图形编程; OpenFrameworks和Cinder是两个引起我注意的库,但后来我们在C ++的土地上。

我来自Java / Swing / Processing背景......对C系列不太了解。如何有效地从本机Cocoa调用Cinder和C ++ C和C ++库?

并且,奖励积分:这样的解决方案能在iPhone或iPad上运行吗?

3 个答案:

答案 0 :(得分:12)

简而言之,C ++适用于OS X和iOS程序,并且可以很好地使用Objective-C。

更详细:

  

但是,我还想做一些图形编程; OpenFrameworks和Cinder是两个引起我注意的库,但后来我们在C ++的土地上。

我不会直接代表这些图书馆。

用更一般的术语回答你的问题:C ++在你的应用程序中很好用,因为C,C ++,ObjC和ObjC ++是iOS应用程序的一流开发语言。

  

我来自Java / Swing / Processing背景......对C系列不太了解。如何有效地从本机Cocoa调用Cinder和C ++ C和C ++库?

Objective-C ++允许您在同一个翻译中使用C,C ++和Objective-C。您可以根据需要随意使用/组合C ++,C或ObjC。编译时间会增加,如果你选择这条路线,会有一些限制*。否则,支持非常好。即使Apple在他们的应用程序/库中使用了大量的C ++。

  

并且,奖励积分:这样的解决方案能在iPhone或iPad上运行吗?

当然。对iOS和OS X的c ++ 11支持目前有点落后。然而,clang团队一直在非常迅速地增加对它的支持。如果你想要最新的功能,可能会有一些障碍,所以如果你的项目依赖于它,我会说最前沿的C ++和编译器功能。当然,使用每个版本的最新clang功能对程序进行采样并不会有什么坏处,以确定它与程序的协作效果。

更新:此时(2011年11月8日),clang几乎可以处理我抛出的所有C ++ 2003代码。与GCC + LLVM相比,代码速度和大小确实有所不同。我不想放弃这一点,但两个编译器对我来说都适用于C ++ 2003,Apple的GCC不支持c ++ 11,所以现在是开始测试clang的好时机,如果你想要c ++ 11的功能在不久的将来。

  • 只要您的团队知道如何使用它,C ++就是iOS上一般性能关键开发的理想选择(IMO)。
  • 如果您出于正确的原因使用每种语言的正确功能,并且存在良好的兼容性,则混合C,ObjC和C ++非常强大。这可以追溯到OS X(尽管编译器当时是GCC)。

*限制:这些是合理的限制 - 您需要的所有功能都存在,但有一些人们可能期望的不可能。最常见的可能是无法导出不同对象模型的类型。也就是说,您无法合理地从objc类型创建c ++类型,但您可以在任一对象类型中自由声明多种类型的ivars。

答案 1 :(得分:6)

可以在iOS应用程序中使用OpenFrameworks和Cinder(请参阅此相关的SO问题:OpenGL ES, OpenFrameworks, Cinder and IOS creative development),尽管Apple“更喜欢”开发人员使用OpenGL。

答案 2 :(得分:3)

截至目前,您可以通过新的CocoaCinderGL wrapper在典型的Cocoa项目中使用Cinder。它允许您向应用程序添加几个NSCustomView,每个NSCustomView都运行一个独立的Cinder实例。显然,您可以根据需要为这些实例连接任意数量的NSButton,NSSliders。希望有所帮助!