2009-07-16 138 views
1

我很困惑這兩個警告。任何人都可以解釋我怎麼可能觸發它們,以及它們如何能夠在gdb中進行調試?GLib-GObject-CRITICAL警告

(gtkworkbook:24668): GLib-GObject-CRITICAL **: g_cclosure_new: assertion `callback_func != NULL' failed

(gtkworkbook:24668): GLib-GObject-CRITICAL **: g_signal_connect_closure_by_id: assertion `closure != NULL' failed

+0

我總是得到這些...很煩人。 – Zifre 2009-07-16 17:15:06

回答

0

我發現了這個問題。

此代碼已從C中的原始實現中移植過來,並且在使用函數指針數組調用共享庫內的函數之前,我有一個要求。雖然這個[似乎]在我開始使用它們的時候開始工作,但事實並非如此。我有點難以理解它爲什麼不起作用,但我能夠將問題集中到以下代碼片段。

 
gtk_signal_connect (GTK_OBJECT (plugin()->workbook()->gtk_workbook), "switch-page", 
(GtkSignalFunc)this->signals[NOTEBOOK_SWITCHPAGE], plugin->workbook()); 

改爲如下:現在

 
gtk_signal_connect (GTK_OBJECT (plugin()->workbook()->gtk_workbook), "switch-page", 
(GtkSignalFunc)signal_gtknotebook_switchpage, plugin->workbook()); 

,代碼編譯,我沒有得到任何嚴重錯誤。我認爲這就是答案!

3

一兩件事你可以嘗試的是通過在--g致命,警告的Gtk ::主,這將導致警告斷言。你可以附加gdb,也可以找出一些關於這個失敗的更多細節。