GTKmm3(GTK+3 C++)编译,但运行时抛出GLib GIO CRITICAL错误

GTKmm3 (GTK+ 3 C++) compiles but throws GLib-GIO-CRITICAL error when run

本文关键字:GLib GIO 错误 CRITICAL 运行时 GTK+3 C++ 编译 GTKmm3      更新时间:2023-10-16

我刚刚开始尝试让GTK+3使用C++,并尝试编译最简单的GTKmm Hello World示例。

#include <gtkmm.h>
int main(int argc, char *argv[])
{
  Glib::RefPtr<Gtk::Application> app =
    Gtk::Application::create(argc, argv,
      "org.gtkmm.examples.base");
  Gtk::Window window;
  window.set_default_size(200, 200);
  return app->run(window);
}

使用编译后

g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`

但是,当我使用运行新编译的应用程序时,没有错误

./simple

我得到以下错误:

GLib-GIO-CRITICAL **: g_application_list_actions: assertion `application->priv->is_registered' failed
Segmentation fault (core dumped)

代码已被复制,与https://developer.gnome.org/gtkmm-tutorial/stable/sec-basics-simple-example.html.en因此,这可能是一个配置问题,但我经常将这台机器用于PyGtk和CommandLine C++,没有任何问题。

如有任何帮助,我们将不胜感激。

这是gtkmm中的一个错误(可能是由GTK+的更改触发的),已在gtkmm修复:https://git.gnome.org/browse/gtkmm/commit/?id=506cba376c0a0e09217ad7f5d597b6723d7f91a6

也许你可以更新你的gtkmm版本。