2013-06-03 51 views
2

在運行下面simple.cc例如用於gtkmm的gtkmm的油嘴GIO臨界

#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消息的含義是什麼?我該如何壓制這個信息?

回答

12

如果提供的application-id無效,那麼它將不會被設置。我不熟悉glibmm位,但是如果您沒有提供g_application_new的ID,那麼根據文檔,「...... GApplication的某些功能(最顯着的是應用程序唯一性)將被禁用。」

「抑制」很簡單 - 只需修復它。提供有效的應用程序ID或根本不提供(傳遞NULL而不是字符串)。在你的例子中,擺脫額外的點(「org.gtkmm.examples.base」,而不是「org.gtkmm..examples.base」)應該做的伎倆。 g_application_id_is_valid文檔說明什麼是有效的ID,包括「應用程序標識符不得包含連續的」。 (句點)字符「。

+0

o是那個點...謝謝你的解釋 –