【问题标题】:How do I create a c++ window on a mac? [closed]如何在 Mac 上创建 C++ 窗口? [关闭]
【发布时间】:2013-06-15 07:08:36
【问题描述】:

如何在 Mac 上使用 C++ 创建窗口。我必须使用openGL吗? 我正在使用 XCode,如果有帮助的话。 我尝试使用 Windows 版本,但它不起作用。

有什么建议吗?

【问题讨论】:

  • 我真的不明白如何以目前的形式回答这个问题。你想用这个窗口做什么?您是否正在制作特定于平台的东西?图形用户界面应用程序?只是想在空窗口中使用 OpenGL 渲染一些几何图形?
  • 对我来说这似乎是一个相当合理的问题。看来这个人只是想知道如何在 macOS 上创建一个窗口。这意味着它是一个 GUI 应用程序。他们是否想使用 OpenGL 并不重要,因为在任何一种情况下都需要创建一个窗口。
  • 这是一个合理的问题。想要使用 C++ 而不是 Objective-C。很多很多人都会有这个问题。这个数字每年都在增长。 @格里米
  • 这个问题对我来说很有意义。我还想知道如何使用 C++ 在 Mac 上打开一个窗口。我不想使用 Objectionable-C。我只想要一个可以在其中绘制线条、矩形和文本的窗口。

标签: c++ opengl osx-mountain-lion


【解决方案1】:

如何在 Mac 上使用 C++ 创建窗口

这取决于安装的操作系统;)我猜你的意思是问“如何在 MacOS X 上使用 C++ 创建窗口?”

我必须使用 OpenGL 吗?

没有。事实上,OpenGL 在等式的另一端。在您完全可以使用 OpenGL 之前,您首先需要一个使用 OpenGL 之外的其他方法创建的窗口。

MacOS X 广泛使用了 Objective-C 和一组具有称为 Cocoa 的 Objective-C API 的类库。在 MacOS X 上创建一个窗口总是需要编写一些 Obj-C 代码。但是,完全有可能围绕它编写一个包装器以提供对另一种语言的绑定。 Obj-C 是一种相当古老的语言,但最近 Apple 创建了 Obj-C++,它与 Obj-C 相关,而 C++ 与 C 相关,即您可以使用与 Objective 结构混合的普通 C++ 语言元素,这使编写 C++ 包装器变得更加容易。

至于如何做,以及哪些细节很重要,这在 StackOverflow 上太复杂了,无法回答。我建议你阅读一些提供可移植窗口创建 API 的框架库的源代码。

由于它们的简单性(不是因为创建 OpenGL 窗口,在这种情况下这实际上是一种干扰)我建议您阅读SFMLGLFW 源代码的相关部分

【讨论】:

  • 这并没有真正回答原来的问题,甚至有点讽刺。我认为“去别处看看”被认为是一个合理的答案是不合理的。
  • @monokrome:这里的问题是在 MacOS X 上没有“唯一正确”的方法来做到这一点。正如我解释的那样,整个 MacOS X GUI 系统都使用了 Objective-C,所以使用 C++总是创建 MacOS X UI 需要某种包装器。一旦问题被解读为“我应该在 MacOS X 上使用哪个 C++ UI 包装器”,它就会立即在 StackOverflow 上偏离主题(主要基于意见)。
  • 我完全理解这个回复的原因,但我仍然不相信你真的回答了这个问题。
  • @monokrome:我看不出我怎么能给出一个中立但真实的答案。 MacOS 是围绕 Objective-C 对象模型构建的。在肯定有 Objective-C++ 的地方,在 MacOS 中没有纯 C++ 窗口之类的东西。您能想到的最好的方法是包装器或框架库,如 Qt 或 wxWidgets。但是,就这个问题而言,我不想认可一个特定的框架作为答案。有时(通常?)你必须接受某些问题(可证明)没有答案的事实。
  • 2015 年,可能是 MacOS。他确实说过麦克。感谢您的回答,而不是继续关闭问题。
【解决方案2】:

有多种可用的库已经处理了平台相关的东西。例如,wxWidgets 在 Mac 上可用,它还可以处理 OpenGL,因此您可以研究一下以帮助您入门。 wxWidgets也有很多样例,大家可以先看看再决定。

您不必使用 OpenGL,但是当您要绘制 2d 或 3d 图像时,它是一个很好的界面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 2016-10-13
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多