我的gtkmm程序不會顯示任何窗口。編譯工作正常。這些都是在運行時,我得到消息:從glade文件gtkmm生成器不起作用
(process:2312): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.24.1/gobject
/gtype.c:2706: You forgot to call g_type_init()
(process:2312): GLib-CRITICAL **: g_once_init_leave: assertion
`initialization_value != 0' failed
(process:2312): GLib-GObject-CRITICAL **: g_object_newv: assertion
`G_TYPE_IS_OBJECT (object_type)' failed
代碼是:
int main(int argc, char** argv) {
Glib::RefPtr<Gtk::Builder> builder =
Gtk::Builder::create_from_file("basic.glade");
Gtk::Window* pMyWindow = 0;
builder->get_widget("window1", pMyWindow);
pMyWindow->show();
}
如果basic.glade是一個有效的文件或不存在沒關係。我嘗試了整個路徑文件而不是basic.glade。
當我調試它時,我意識到程序永遠不會從構建器的第一行中跳出來。這就像它一直在運行,所以當我暫停唯一的過程時,要麼是g_once_init_enter_impl()
要麼是g_slist_find()
(被前者調用)。 所以我從來沒有看到任何窗口(因爲它從來沒有得到到pMyWindow->show()
線)
快速的問題,你必須摧毀(釋放內存)的窗口在主要? – Matthew