gtkmm glib gio很关键

Adi*_*hag 3 c++ gtk glib gtkmm

在运行gtkmm的以下simple.cc示例时

#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;
  //Gtk::ApplicationWindow window(app);                                         
  return app->run(window);                                                  
}
Run Code Online (Sandbox Code Playgroud)

我面对以下消息:

 (process:9428): GLib-GIO-CRITICAL **: g_application_set_application_id: assertion `application_id == NULL || g_application_id_is_valid (application_id)' failed
Run Code Online (Sandbox Code Playgroud)

但是,应用程序不会中断,窗口生成并且直到我ctr + C程序才会退出.

这个GLib-GIO-Critical消息的含义是什么?我怎么做才能压制消息?

nem*_*equ 13

如果提供的application-id无效,则不会设置.我不熟悉glibmm位,但如果你没有为g_application_new提供ID,那么根据文档,"...... GApplication的一些功能(最显着的应用程序唯一性)将被禁用."

"抑制"很容易 - 只需修复它.提供有效的应用程序ID或根本不提供应用程序ID(传递NULL而不是字符串).在你的例子中,摆脱额外的点("org.gtkmm.examples.base"而不是"org.gtkmm..examples.base")应该可以解决问题.该g_application_id_is_valid文档解释了什么是有效证件,包括"应用标识符不能包含连续的'’ (期间)人物."