编辑:这个问题已在评论中间接回答(使用 GLUT 来避免需要任何一个),但由于它没有作为答案发布,尽管我的问题已解决,但我不能“接受”它。
我有一个用 C++ 编写的跨平台 OpenGL 应用程序,它(在 Mac OS X 上)使用 Carbon 来创建窗口和消息泵(想想……NeHe 第 1 课)。最近使用 C++11 特性对我的代码进行的更改使其与 XCode 捆绑的 GCC 不兼容。
我所有使用 MacPorts、HomeBrew 等系统的尝试都因不同的原因而失败(主要是因为我需要编译 32 位以支持 Carbon)。我最初想问是否有人有更好的解决方案来在 Mac OS X 10.8 中安装更新的 G++。
这似乎是一个短视的解决方案(在某些时候,我需要升级到 Cocoa 和 64 位)所以我的问题已经演变为询问让我现有的(非常大的)应用程序利用 Cocoa 来完成这项任务的最简单方法是什么而不是碳?
我在自己单独的.cpp/.h 文件中拥有所有“碳代码”,该文件只有两个功能,一个用于创建 OpenGL 窗口,另一个是使用 ReceiveNextEvent 的消息泵。
编辑: 为了更清楚,我正在寻找最好的方法来设计(或多或少)替代我现有的 Carbon 窗口创建和消息泵功能,但在 Cocoa 中。我知道作为一个不同的 API,使用不同的语言概念,简单的一对一命令替换是不够的。我现有的代码有一个适用于 Mac 的源代码文件,该文件有两个函数,它们执行我调用的核心任务(使用 Carbon),InitWindow 和 DoEvents。它们分别创建窗口,并循环处理未决事件。我的目标是用使用 Cocoa 的源代码文件替换这个源代码文件,公开相同的功能,因此对我的核心代码几乎没有修改。
实现我的目标的最佳方式是什么?我不熟悉 Cocoa,Obj-C 对我来说是陌生的。