2013-06-22 85 views
0

当我的C++跨平台(Windows,Linux,Mac)OpenGL应用程序未能初始化以让用户知道哪里出了问题时,我想显示一条错误消息。跨平台错误消息

我的想法而已:

  1. 写入错误到std :: CERR
    • 问题:控制台始终显示在Windows上,甚至:如果不是从它运行
    • 问题壳牌不显示在Linux如果没有必要(如果编译为控制台应用程序)
  2. 使用GUI库
    • 问题:矫枉过正,因为其他一切都会使用OpenGL显示。我使用GLFW获得窗口/上下文。
  3. 特定于平台的实现#ifdef和
    • 问题:我宁愿不希望与本地API混乱,并可能必须扩大支持后

你会如何解决这个问题?

回答

1

的GUI解决方案实际上是一个很好的,但这个问题的确是你需要另一种依赖,除非建议...

...你只是一个代码功能每个平台都会使用每个平台的GUI代码报告错误。

您将只为您的主平台实现其中一个错误函数报告,然后通过移植,编写其他版本。如果您已经直接使用所有平台,那么在所有平台上都要使用一次,然后使用它。

由于它只是报告消息,所以不应该很难,很长或甚至有问题。

只要按照K.I.S.S.原理。

(注:可在下次启动时,而不是出现问题时,这肯定会更安全的进行显示的消息)


话虽这么说,将来你可能要更复杂错误报告系统。在这种情况下,将错误报告代码作为一个单独的项目进行开发是非常值得的,这个项目可能会有自己的依赖关系,并且只会被主项目中的任何问题触发(无论通信方式如何)。在这种情况下,可以有像Qt这样的其他依赖(虽然它是一种重量级...)或wxWidgets(也可以)或GTK(我的经验并不积极,但对于简单的事情来说没关系)。 一个设计为轻量且简单的GUI框架就是FLTK,所以它可能足够简单和轻便,可以坐在应用程序旁边。

1

wxWidgets(或类似的跨平台框架)。或者,手动你下3

+0

对于错误消息框,它不是太重吗? – acrilige

+0

不,因为一开始它只会是一个消息框,以后会更多的窗口... – user1764961

+0

在这种情况下,使用#ifdef的几行代码就足够了。 – user1764961