2009-07-16 311 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,也可以找出一些关于这个失败的更多细节。