跨平台的Objective-C / C ++开发

我在一个开发团队工作,我们其中一个专门在Windows下工作,我主要在Mac OS X上工作。我们想用C ++或Objective-C来开发基于C的应用程序,但是我并不是很了解如何去做一个跨平台的开发项目。

使用Mac OS X在C ++中工作是否可行? 很明显,它们是面向Objective-C的,但是对C ++的支持也是如此。 那么这些语言的跨平台开发呢? 我会使用像boost和某种types的UI库。

有没有人有开发多平台的经验,但允许应用程序本地运行,而不需要虚拟机?

编辑 :有很多答案我现在要标记为正确的。 Qt似乎是用C ++去开发它的方法。 机会是* nix,OS X和Windows,这对我们来说是最好的select。 如果我可以避免编写Objective-C,那么团队坚持使用C ++,那就更好了。 如果我必须在Objective-C中编写GUI并混合搭配,那么这也不是太麻烦。

你可以看看Qt 。 我已经成功地在Windows,Linux和Mac OSX项目中使用它。

我为一家使用C ++,MFC和Objective-C为Mac OS X和Windows生成软件的软件公司工作。

是的,这是绝对有可能的。

如果你在C ++中开发应用程序的“核心”,你可能会得到最好的服务。 在MVC应用程序中,C ++部分将是模型,可能还有控制器。 对于与GUI和其他特定于操作系统的接口接口的代码,您应该使用本机API:Windows XP上的Mac OS X和C#上的Objective-C。

关于Mac的好处是你可以一起编译C ++和Objective-C。 你甚至可以在同一个编译单元中编译C ++和Objective-C的Objective-C ++。 不幸的是,你不能用C#做这个(有一个叫做Managed C ++的东西,它是一个不同的野兽)。

我会避免跨平台的框架,如Qt和wxWidgets。 他们都允许你开发跨平台的应用程序,但是这样的应用程序的外观和感觉是低于标准的。 不过,我对wxWidgets更加熟悉,它的设计主要面向Windows MFC应用程序设计范例。

编辑2009年5月14日,上午9:44 EST:如果Qt现在允许本地平台的真实外观和感觉,这可能是一个不错的选择。 我没有看过最新的产品,所以你可能想在设计自己的产品之前先看看这个框架。 这个决定应该在检查应用程序的结果之后做出,并且对于Qt需要的设计范例有多么舒服。

我使用的是用C或C ++编写的公共库,它具有应用程序的所有核心功能。

比方说,你正在建立一个纸牌游戏。 所以你将有一个纯粹的C ++(主要是平台独立)库的核心类。

  • CoreSolitaire

然后,你将有单独的UI项目,每个平台你想部署你的纸牌:

  • iSolitaire(Objective-C,基于iPhoneOS的MultiTouch可可)
  • MacSolitaire(Objective-C,可可基于Mac OS X)
  • WinSolitaire(基于Windows平台的C ++,Win32或C#)
  • GSolitaire(基于Linux / Unix的C ++,GNOME / GTK)

这是更多的工作,但是,在我看来,最终的产品肯定比使用像QT或wxWidgets这样的独立于平台的小部件集合更好。

话虽如此,如果您打算在一个完全控制部署环境的公司内部部署您的产品,并且您不关心如何在不同的平台上运行最终的产品,那么您绝对可以使用所有东西的公共API(QT,wxWidgets或任何其他你可能遇到的)。

使用Mac OS X在C ++中工作是否可行? 很明显,它们是面向Objective-C的,但是对C ++的支持也是如此。

就在这里。

例如,您可以在OS X中使用C ++来完成任何您想要的任何操作 – 例如,您可以在Linux上使用C ++进行操作。 支持gcc的C ++编译器,c ++库等等。 Xcode提供了使用C ++的支持。

您甚至可以将Objective-C与Objective-C混合使用c ++(但是,请注意,这对于GUI工作来说是不可移植的)。

那么这些语言的跨平台开发呢? 我会使用像boost和某种类型的UI库。

我相信你最好的选择是QT 。

它是一个跨平台(Windows,OSX,Linux等)的稳定的C ++库,已经存在了十多年,得到了很好的支持,其中编写了许多商业应用程序(Skype,Adobe Photoshop Album)和一吨用它编写的开源的东西(KDE桌面的初学者)。 除了GUI的东西,它提供了更多的东西(容器类,XML,数据库连接等)。

您可以使用最新的QT免费开发开放源码和专有(封闭源码)应用程序,并且该库最近被巨大的跨国公司NOKIA收购,所以它不会很快消失。

除了图书馆,QT还带有一个IDE和一个Visual Forms Designer(全部免费)。

用于C ++的其他跨平台GUI库也存在于OS X( wxWidgets , gtkmm等)中。

有没有人有开发多平台的经验,但允许应用程序本地运行,而不需要虚拟机?

略。 确保您环绕所有平台特定的代码。 这样你的主要应用程序或库不需要引用平台特定的代码。 当移植到另一个平台时,这应该会更容易。