gtk运行时出现这样的错误时怎么回事?

软件和网站开发以及相关技术探讨
回复
头像
cr4315
帖子: 57
注册时间: 2010-04-08 11:03

gtk运行时出现这样的错误时怎么回事?

#1

帖子 cr4315 » 2010-07-20 17:24

程序在编译的时候没有出错,但是运行时却是出现这样的错误信息:
(xxx:3676):Gtk-CRITICAL **:gtk_window_set_position:essertion 'GTK_IS_WINDOW(window)' failed
(xxx:3676):Gtk-CRITICAL **:gtk_image_set_from_pixbuf:assertion 'GTK_IS_IMAGE(image)' failed
(xxx:3676):GLib-GObject-WARING **: invalid(NULL) pointer instance
( xxx:3676):GLib-GObject-CRITICAL **:g_signal_connect_data: assertion 'GTK_TYPE_CHECK_INSTANCE(instance)' failed
(xxx:3676):GLib-GObject-WARING **: invalid(NULL) pointer instance
( xxx:3676):GLib-GObject-CRITICAL **:g_signal_connect_data: assertion 'GTK_TYPE_CHECK_INSTANCE(instance)' failed
(xxx:3676):GLib-GObject-WARING **: invalid(NULL) pointer instance
( xxx:3676):GLib-GObject-CRITICAL **:g_signal_connect_data: assertion 'GTK_TYPE_CHECK_INSTANCE(instance)' failed
(xxx:3676):GLib-GObject-WARING **: invalid(NULL) pointer instance
( xxx:3676):GLib-GObject-CRITICAL **:g_signal_connect_data: assertion 'GTK_TYPE_CHECK_INSTANCE(instance)' failed
(xxx:3676):GLib-GObject-WARING **: invalid(NULL) pointer instance
( xxx:3676):GLib-GObject-CRITICAL **:g_signal_connect_data: assertion 'GTK_TYPE_CHECK_INSTANCE(instance)' failed
( xxx:3676):Gtk-CRITICAL **:gtk_widget_show_all: assertion 'GTK_IS_WIDGET(widget)' failed
请问这是怎么回事,我在suse 里面已经将gtk,x11,wxwidget等都已经安装了。
请各位指导下小弟,小弟感激不尽,小弟先谢了!
这条路很远很漫长也很坎坷,但是要淡定,要风骚
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: gtk运行时出现这样的错误时怎么回事?

#2

帖子 HuntXu » 2010-07-20 21:17

普通的警告信息而已,仔细检查你的代码
HUNT Unfortunately No Talent...
头像
cr4315
帖子: 57
注册时间: 2010-04-08 11:03

Re: gtk运行时出现这样的错误时怎么回事?

#3

帖子 cr4315 » 2010-07-21 9:04

HuntXu 写了:普通的警告信息而已,仔细检查你的代码
谢谢!代码在Ubuntu下面可以运行,没有出现这样的情况,可是一直到suse里面编译通过但是运行的时候出现这种错误,请问这是怎么回事,麻烦指导下!谢谢!
这条路很远很漫长也很坎坷,但是要淡定,要风骚
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: gtk运行时出现这样的错误时怎么回事?

#4

帖子 HuntXu » 2010-07-21 22:09

glib2和gtk2编译参数的问题,发行版使用不同的参数而已,有些警告隐藏了有些没有隐藏,错误原因是GTK_TYPE_CHECK_INSTANCE(instance)里面传了一个空指针于是产生了一个assertion,所以才让你检查代码的。具体自己看gtk2或者glib2的源码吧。不过像我用--disable-debug这样编译的话,这个assertion被跳过了,于是直接segfault,所以还是要注意一下的
HUNT Unfortunately No Talent...
头像
cr4315
帖子: 57
注册时间: 2010-04-08 11:03

Re: gtk运行时出现这样的错误时怎么回事?

#5

帖子 cr4315 » 2010-07-22 11:59

谢谢!我将出错的源程序贴出来:
g_window = GTK_WIDGET(gtk_builder_get_object(g_builder, "window"));
gtk_window_set_position(GTK_WINDOW(g_window), GTK_WIN_POS_CENTER);
button=GTK_WIDGET(gtk_builder_get_object(g_builder,"btnOk"));
button1=GTK_WIDGET(gtk_builder_get_object(g_builder,"btnCancel"));
button2=GTK_WIDGET(gtk_builder_get_object(g_builder,"btnAbout"));

radiobutton4=GTK_WIDGET(gtk_builder_get_object(g_builder,"radiobutton4"));
radiobutton9=GTK_WIDGET(gtk_builder_get_object(g_builder,"radiobutton9"));
radiobutton20=GTK_WIDGET(gtk_builder_get_object(g_builder,"radiobutton20"));

Orient_Dots=9;
image_point=GTK_WIDGET(gtk_builder_get_object(g_builder,"imageDot"));
point_9 = gdk_pixbuf_new_from_inline (28208+24,point9_sl,TRUE,NULL);
gtk_image_set_from_pixbuf(GTK_IMAGE(image_point),point_9);
gdk_pixbuf_unref (point_9);
g_signal_connect( G_OBJECT(button), "clicked",G_CALLBACK(on_btnOk_clicked), NULL);
g_signal_connect( G_OBJECT(button1), "clicked",G_CALLBACK(on_btnCancel_clicked), NULL);
g_signal_connect( G_OBJECT(button2), "clicked",G_CALLBACK(on_btnAbout_clicked), NULL);
g_signal_connect ((gpointer) radiobutton4, "toggled",G_CALLBACK (on_radiobutton4_toggled), (gpointer) g_window);
g_signal_connect ((gpointer) radiobutton9, "toggled",G_CALLBACK (on_radiobutton9_toggled), (gpointer) g_window);
g_signal_connect ((gpointer) radiobutton20, "toggled",G_CALLBACK (on_radiobutton20_toggled),(gpointer) g_window);
g_signal_connect(GTK_OBJECT(g_window),"key_press_event",GTK_SIGNAL_FUNC(on_dotselet_press_event),NULL);
gtk_builder_connect_signals(g_builder, NULL);
gtk_widget_show_all(g_window);
调试的时候在第二句就开始出现提示的错误,其中的g_builder是全局变量,由 g_builder = gtk_builder_new();
gtk_builder_add_from_file(g_builder, GLADE_FILE_LANG, NULL);
获得,但是g_signal_connect函数中的参数本身都没有问题,但是为什么会有上面的错误呢?麻烦您指导下!谢谢!
这条路很远很漫长也很坎坷,但是要淡定,要风骚
回复