3

为 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);                                                  
}

我面临以下消息:

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

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

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

4

2 回答 2

13

如果提供的应用程序 ID 无效,则不会设置它。我不熟悉 glibmm 位,但是如果您不向g_application_new提供 ID,那么根据文档,“...... GApplication 的某些功能(最显着的应用程序唯一性)将被禁用。”

“压制”它很容易 - 只需修复它。提供有效的应用程序 ID 或根本不提供(传递 NULL 而不是字符串)。在您的示例中,摆脱多余的点(“org.gtkmm.examples.base”而不是“org.gtkmm..examples.base”)应该可以解决问题。g_application_id_is_valid文档解释了有效 ID的构成,包括“应用程序标识符不得包含连续的 '。” (句号)字符。”

于 2013-06-03T09:56:02.097 回答
0

我对解决方案中的解释感到高兴,但是..基于此,只需传递一个空字符串“”。但是“org.gtkmm.example”应该可以工作

于 2018-03-29T02:54:13.900 回答