При запуске следующего примера simple.cc для gtkmm
#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
Тем не менее, приложение не ломается, окно создается и не закрывается, пока я не нажму + C программы.
Каковы последствия этого сообщения GLib-GIO-Critical? Что я делаю, чтобы подавить сообщение?
Если указанный идентификатор приложения недействителен, он не будет установлен. Я не знаком с битами glibmm, но если вы не предоставите идентификатор g_application_new затем, согласно документации, «… некоторые функции GApplication (особенно уникальность приложения) будут отключены».
«Подавить» это легко — просто исправьте это. Укажите действительный идентификатор приложения или не указывайте его вообще (передайте NULL вместо строки). В вашем примере избавление от лишней точки («org.gtkmm.examples.base» вместо «org.gtkmm..examples.base») должно помочь. g_application_id_is_valid Документация объясняет, что представляет собой действительный идентификатор, включая то, что «Идентификаторы приложения не должны содержать последовательных». (точка) символов. «
Я доволен объяснением в решении, но .. на основании этого просто пропустите пустую строку «». Однако «org.gtkmm.example» должен работать