我的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