g_closure_marshal提供了一些常用的closure的实现,但是由于返回值和参数列表的可能性实在太多,无法穷举,所以,gobject提供了一个程序:glib-genmarshal来帮我们生成指定的closure的实现(自动生成代码)。
在当前目录下创建一个文件,比如:marshal.list,包含内容如下:
VOID:UINT,UINT
就是返回值和参数列表。然后:
glib-genmarshal --header --prefix=gst_play_marshal marshal.list
这样就生成了头文件的内容,保存下来存成gstplay-marshal.h,搞定。
glib-genmarshal --body --prefix=gst_play_marshal marshal.list
生成了.c文件的内容,保存成gstplay-marshal.c,搞定。在这个.c的第一行再添加一句:#include "gstplay-marshal.h",这句不会自动生成。
这样就有了gst_play_marshal_VOID__UINT_UINT这个函数了,easy。
在当前目录下创建一个文件,比如:marshal.list,包含内容如下:
VOID:UINT,UINT
就是返回值和参数列表。然后:
glib-genmarshal --header --prefix=gst_play_marshal marshal.list
这样就生成了头文件的内容,保存下来存成gstplay-marshal.h,搞定。
glib-genmarshal --body --prefix=gst_play_marshal marshal.list
生成了.c文件的内容,保存成gstplay-marshal.c,搞定。在这个.c的第一行再添加一句:#include "gstplay-marshal.h",这句不会自动生成。
这样就有了gst_play_marshal_VOID__UINT_UINT这个函数了,easy。