运行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消息的含义是什么?我该怎么做来压制消息?
答案 0 :(得分: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文档解释了什么构成了有效ID,包括“应用程序标识符不能包含连续'。” (期间)人物。“
答案 1 :(得分:0)
我对解决方案中的解释感到高兴但是...基于那只是传递一个空字符串“”。但是“org.gtkmm.example”应该可以正常工作