我对这两个警告感到困惑。任何人都可以解释我是如何触发它们的,以及它们如何能够在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
答案 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());
现在,代码编译,我没有得到任何讨厌的错误。我认为这就是答案!