0

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

到目前为止我的想法:

  1. 将错误写入 std::cerr
    • 问题:不从 Linux 运行时,Shell 不显示在 Linux 上
    • 问题:控制台始终显示在 Windows 上,即使不需要(如果编译为控制台应用程序)
  2. 使用 GUI 库
    • 问题:矫枉过正,因为其他所有内容都将使用 OpenGL 显示。我使用GLFW获取窗口/上下文。
  3. 特定于平台的实现和#ifdef
    • 问题:我不想弄乱原生 API 并且可能不得不在以后扩展支持

你会如何解决这个问题?

4

2 回答 2

1

wxWidgets(或类似的跨平台框架)。或者,手动执行您在 3 下的建议。

于 2013-06-22T21:05:42.787 回答
1

GUI 解决方案实际上是一个很好的解决方案,但问题确实是您需要另一个依赖项,除非...

...您只需为每个平台编写一个函数,该函数将使用每个平台的 GUI 代码报告错误。

您将只为您的主要平台实现这些错误功能报告之一,然后通过移植,编写其他版本。如果您已经直接使用所有平台,那么对所有平台执行一次并继续使用它。

因为它只是报告一个消息,它应该不难,不长,甚至没有问题。

只需遵循 KISS 原则。

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


话虽如此,将来您可能需要更复杂的错误报告系统。在这种情况下,值得投资将您的错误报告代码开发为一个单独的项目,该项目将拥有自己的依赖项,并且只会被主项目中的任何问题触发(无论其通信方式如何)。在这种情况下,可以有另一个依赖项,比如 Qt(虽然它有点重量级......)或 wxWidgets(有点太)或 GTK(我的经验并不积极,但对于简单的事情来说没关系)。一种设计为轻量级和简单的 GUI 框架是 FLTK,因此它可能足够简单和轻量级,可以放在您的应用程序旁边。

于 2013-06-22T21:08:09.127 回答