我正在尝试创建并发出 GTK 信号:
g_signal_new("child-finished",
G_TYPE_OBJECT,
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
NULL, // *** I think this is where I need to change it
G_TYPE_NONE, 0);
g_signal_connect(G_OBJECT(myWindow), "child-finished", G_CALLBACK(MyCallback), NULL);
这是我发出信号的代码:
gtk_signal_emit_by_name(referenceToMyWindow, "child-finished");
这是我处理信号的代码:
void MyCallback(GtkWidget *w, GdkEvent *e)
{
// handler code here
}
当我运行代码时,出现以下错误:
GLib-GObject-CRITICAL **:g
_closure_
调用:断言 `closure->marshal || 关闭->meta_marshal' 失败
我知道这与将 marshaller 传递给g_signal_new
函数有关,但我不知道 marshaller 是什么,我无法理解文档,并且在线示例很少而且相差甚远。如何声明和连接自己的信号?