【问题标题】:Complete solution for writing Mac OS X application in C++用 C++ 编写 Mac OS X 应用程序的完整解决方案
【发布时间】:2009-03-11 12:58:31
【问题描述】:

我正在为我目前的机器寻找替代品,Mac OS X 似乎很有吸引力。

我的主要兴趣领域是 C++ 编程。目前我正在使用 Eclipse + CDT 和 g++ 来创建我的软件;有时是KDevelop。

我知道 Mac 的主要 IDE 是 Xcode,主要语言是 Objective-C。如果可能的话,我想避免学习 Objective-C。我还听说/读到从 C++ 访问 Mac OS X API 时存在一些问题。

因此我的问题是: 为 Mac OS X 开发/调试/测试访问硬件所有方面(UI、声音、视频/加速视频等)的 C++ 应用程序的完整解决方案是什么?

编辑:Xcode 与 Eclipse+CDT 组合相比如何?如果这种比较是可能的......

【问题讨论】:

  • XCode 可以很好地处理 C++。我认为 Objective-C 是主要语言有点言过其实。 Objective-C 将是开发应用程序的 GUI 部分的主要语言,但不是必需的。
  • @Martin,如果我没记错的话,Cocoa 应用程序需要 Objective-C。
  • 顺便说一句。我还读到 Objective-C 是一种只有 Apple 使用的小众语言。那么,学习所有这些真的值得吗?
  • 是的。它只是 c 之上的 smalltalk 的一部分,所以没有太多的努力。它是增长最快的细分市场中使用的一种利基语言。

标签: c++ xcode macos ide


【解决方案1】:

如果你想使用 C++ 而不是 Objective-C,并且仍然想避免中间层的库(例如 QT),你可以使用Carbon

我会使用 XCode 而不是 Eclipse,因为 Eclipse 在处理核心 C/C++ 编程(编译、调试、测试)时速度较慢。

当我第一次开始在 Mac OS X 中编程时,我和你现在处于同一页面。我认为最好坚持使用我知道的语言(C++)并使用较旧的库(Carbon)。出于某种我现在不记得的原因,我强迫自己使用 Cocoa (Objective-C)。回想起来,我认为这是一件好事,因为:

  1. Objective-C 与 C++ 没有根本区别
  2. Cocoa 比 Carbon 更好、更快、更简单
  3. iPhone Dev 完全是 Cocoa(不支持 Carbon)

【讨论】:

  • -1 对于新的应用程序开发,使用 Carbon 是非常糟糕的建议。
  • 阅读问题。如果您想在 Mac OS X 中编写 C++ GUI 应用程序,您会使用什么?
【解决方案2】:

您应该避免学习 Objective-C 和 Cocoa。事实上,它应该是你做的第一件事。除非您在 Smalltalk 方面有扎实的背景,否则您不太可能接触过设计精良的大型(一组)框架。

【讨论】:

    【解决方案3】:

    Objective-C 并不难。如果您了解 C++,那么您将花费一到三天的时间来学习这些约定。

    Cocoa API 和约定需要更长的时间,但这些都是及时的。

    祝你好运!

    【讨论】:

      【解决方案4】:

      我一直在尝试使用 Objective-C++ 编写 UI,这使得使用 C++ 编写应用程序后端变得更加容易。这对我来说似乎工作得很好。 Objective-C 和 Objective-C++ 很容易上手,这让我可以继续使用我来之不易的 C++ 知识。

      【讨论】:

        【解决方案5】:

        除非您正在考虑使用像 QT 这样的中间层,否则我认为您几乎会被 Objective C 卡住来与 API 的某些部分(如 GUI)进行交互,因为它是他们的母语。

        也就是说,您可以轻松地混合使用 Objective-C 代码和 C++ 代码,因此您仍然可以使用 C++ 编写大部分应用程序。

        我主要是一名 C++ 程序员,但我总是涉足其他语言,并且我玩过 XCode(是的,我有一台 Mac)。我喜欢它,它有点不同,但作为一种将 OS X GUI 组合在一起的方式,它非常棒,如果你不太喜欢 XCode,剩下的就是你和你最喜欢的编辑器之间的事了。

        【讨论】:

        • 我的想法是,我现在使用的 Linux 在 GUI 实现和 API 方面非常分裂/分裂。 Mac 似乎是一个很有前途的平台。
        • 我几乎在同一条船上 - 我是一个长期的 Unix/Linux 用户和开发人员,但我从来没有真正想为两者编写 GUI 应用程序。 OS X 似乎是两全其美的,它具有极好的一致的 GUI 和底层的 Unix。
        【解决方案6】:

        C++ 与 Xcode 配合得非常好。如果你想要 cocoa,你可以为 gui 层学习最少(我的意思是非常少)的 Obj-C,并使用 C++ 编写大部分代码。

        另一种选择是使用其中一个脚本语言框架来连接到 Cocoa API(例如 PyObjc)和 C++ 中的大部分逻辑。

        第三个也是最后一个选项是使用跨平台的 gui 工具包,例如 Qt4。如果希望使您的库跨平台,这将是您的最佳选择。

        我建议不要使用 Carbon。这绝对是一头垂死的野兽。您还可以使用上述组合,为您的 C++ 代码提供一个库,然后创建链接它们的 gui 特定 UI。

        【讨论】:

          【解决方案7】:

          在 OS X 中使用 gcc 或 g++ 没有问题。XCode 安装无论如何都会为您提供这些编译器,如果您真的需要,您可以加载一个 x 服务器实例并让 KDE 工作。不过我自己喜欢 XCode 编辑器。 Eclipse 也适用于 OS X,因此您应该能够使用您当前的环境。

          我之前使用过 OS X 机器将 C 代码从 PPC 架构交叉编译到 ARM 架构,没有任何问题。它只是另一个 *nix 风格的系统,所以您熟悉的所有工具都已经存在,如果没有,请使用 finkmacports 自己获取。

          另外,如果您真的想使用 C++ 来开发 GUI OS X 应用程序,您总是可以使用 Carbon 而不是 Cocoa。这是一个完全可行的选择,只是略微被弃用。

          【讨论】:

          • 随着 LGPLed QT 的推出,我越来越热衷于使用它。
          • 学习 Carbon 是个坏主意。任何有可可等价物的东西都被有效地弃用了,碳 gui api 永远不会是 64 位干净的。最好使用 Objective-C++ 与 Cocoa 交互,并且仅在绝对必要时使用 Carbon。
          【解决方案8】:

          Mac OS X 上的 Carbon 已被有效弃用 - 它不支持也不支持 64 位应用程序。

          如果你真的想用c++,就用Qt Creator

          现在是免费的,并且奇趣 SDK 包含 Qt 4.5,虽然它是一个 c++ 框架,但它在内部使用 Objective-C 与 MAC OS X 交互,因此您不受 Carbon 的限制。

          缺点是 trolltech 库在 mac 上不是标准的,你必须在你的应用程序中提供它们。

          【讨论】:

            【解决方案9】:

            我同意 Pablo Santa Cruz 的观点,并想补充一点,在同一个应用程序(和同一个源文件)中混合 Objective-C 和 C++ 是微不足道的。这被称为 Objective-C++ 并讨论了in this article

            XCode 使用 GCC 编译,因此您可以轻松使用 Objective C、C 和 C++。

            【讨论】:

              【解决方案10】:

              我自己没有在 OSX 上使用过它(我可以在 Windows 上推荐它),但 Code::Blocks C++ IDE 是使用并支持跨平台 wxWidgets GUI 库实现的。它在 OSX 上受支持 - 请参阅 this page

              【讨论】:

                【解决方案11】:

                我建议您坚持使用您最熟悉的 IDE。就个人而言,我第一次使用 Xcode 时就讨厌它,并拒绝放弃 Eclipse。几天后,我对 Xcode 进行了热身,不介意时不时地使用它。但是,我仍然尽可能使用 Eclipse。

                请记住,您不能仅使用 C++ 编写 Cocoa 应用程序,您需要为此深入研究 Obj-C。 Carbon 应用程序看起来或行为都不像 Cocoa 应用程序。大多数人不会真的介意,但这是值得考虑的事情。我从 java/C# 跳入 Obj-C 没有任何问题。这门语言需要一点时间来适应,但并不难。

                【讨论】:

                  【解决方案12】:

                  对于一些小的爱好项目,以及我正在制作的 iPhone 应用程序,我混合使用了客观 C++ 和“真正的”C++。 XCode 很好地支持两种语言的混合。我使用 Objective C/objective C++ 作为用户界面,并作为 OSX 框架和我自己的代码之间的薄层。到目前为止,事实证明这是一种很好的工作方式。

                  【讨论】:

                  • 哦,作为我自己答案的一个小补充:值得学习 ObjC/ObjC++!该语言易于学习,功能强大,并且在与 OSX 框架一起使用时允许一些非常有趣的结构。 OSX 程序的内部可以和外部一样精致。
                  【解决方案13】:

                  我现在在 Mac 中使用的开发环境是 QTCreator,它是一个免费的 IDE,用于在 QT 中使用 gcc 作为编译器进行开发。它提供了我需要的所有功能,而且它是跨平台的(我正在开发的应用程序的一项要求)。

                  我不得不说我印象深刻。我对这样一个专注(专为 QT 设计)和最近的 IDE 并没有寄予厚望。该环境简单但功能强大(包括 GUI 编辑),并且具有我见过的更好的代码完成。在这种环境下编程轻而易举,不要错过 Visual Studio。

                  真的值得一试。

                  【讨论】:

                    【解决方案14】:

                    如果您真的想在 Mac OS X 上使用 C++,请使用 SDL / wxWidgets / Qt 之类的东西。

                    可以选择将 Objective-C 与 C++ 结合起来,称为 Objective-C++。你可以将它用于你所有的模型,只使用 Objective-C,如果没有 Foundation 框架,这是不可能的。

                    作为最后一个选项,我想到了Carbon。这是一个在前 OSX 时代使用的本机框架,但在 Mac OS X 上运行。问题是,它不支持更新的技术,我认为 OS X 的下一个版本 Snow Leopard 不会支持完全没有。

                    苹果说:

                    Carbon 使 C/C++ 开发人员能够 利用 Mac OS X 的功能, 包括 Quartz 2D 图形 库,高效的事件处理 机制和多处理 支持。此外,其他 行业标准 C/C++ API 是 可供 Carbon 开发人员使用, 提供对此类服务的访问权限,例如 OpenGL 绘图系统,Mach 微内核和 BSD 操作系统 服务。

                    不要期望 Carbon 应用程序看起来是 100% 原生的,而且它的编程比 Cocoa 复杂得多。

                    不过,我推荐learning Objective-C,它并不难,而且有很多强大的框架,如CoreData、CoreGraphics 等。

                    【讨论】:

                      猜你喜欢
                      • 2012-06-18
                      • 2015-07-21
                      • 2013-09-13
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-07-08
                      • 2012-01-08
                      • 1970-01-01
                      相关资源
                      最近更新 更多