每当我关闭我的Gtk#应用程序时,我都会得到这个:
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-WARNING **: g_set_prgname() called multiple times
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(/home/matthew/opensbs/OpenSBS/bin/Debug/OpenSBS.exe:5050): GLib-GObject-CRITICAL **: g_object_ref: assertion `object->ref_count > 0' failed
我不确定这里发生了什么。我发现一个人在谷歌上有类似的问题,但他们似乎是应用程序的用户,而不是开发人员。一个想法?
答案 0 :(得分:4)
有些东西搞砸了。
g_set_prgname()是一个内部例程,通常只由程序初始化程序调用,如gdk_init()或gtk_init()(调用gdk_init())。因此,如果它被调用两次,那么它不应该。我读了你的答案,也许一些Glade初始化例程正在冗余地调用它。了解您正在运行的Glade和GTK的版本将会有所帮助。
就其他消息而言...... GLib / GObject是一个对象系统,具有单继承和RTTI(运行时类型识别),用C实现。
那些警告/关键对表明你的一些对象指针失败了RTTI测试非常悲惨。这样的测试在GTK / GDK内部常见 - 例如,“我希望这个指针是如此,但在我这样对待之前,我最好确定一下。”您看到的每个消息对都表示指针已经传递给这样的例程,但它指向的不仅仅是预期的对象类型,它甚至没有指向RTTI系统识别的任何内容,因此RTTI系统正在举手
这种指针失败的最可能的罪魁祸首是:
答案 1 :(得分:0)
好吧,我仍然不确定这个警告意味着什么,但我弄清楚是什么导致它:
我有一个带有AccelGroup的glade文件。 AccelGroup是主窗口及其MenuItems的属性。我从Window中删除了它。这是警告开始的时候。我通过完全从林间空地文件中删除它来固定它(从而将其从菜单项中删除)。