glib-genmarshal的使用,如何使用自定义的signal函数

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这个函数了。
posted @ 2010-12-10 12:57  super119  阅读(457)  评论(0编辑  收藏  举报