GLib-GObject-CRITICAL警告

时间:2009-07-16 16:43:19

标签: c++ c gtk

我对这两个警告感到困惑。任何人都可以解释我是如何触发它们的,以及它们如何能够在gdb中调试?

(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

2 个答案:

答案 0 :(得分:3)

你可以尝试的一件事是将-g-fatal-warnings传递给Gtk :: Main,这会导致警告断言。您可以使用gdb附加,也可以找出有关失败的详细信息。

答案 1 :(得分: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());

现在,代码编译,我没有得到任何讨厌的错误。我认为这就是答案!