用SWIG

时间:2015-10-26 23:03:49

标签: python c pointers struct swig

我正在尝试包装一个用C编写的函数,以便我可以使用SWIG

在Python中访问它

我遇到的问题是它需要一个指向结构的指针,而不是指向结构的指针,例如。

int update_tracks(track_t **hash_tracks);

如果是:

int update_tracks(track_t *hash_tracks);

我没有问题,因为我可以创建参数并从python中调用函数,如下所示:

hash_tracks = track_t()
n = update_tracks(hash_tracks)

track_t是一个简单的C结构,包含一些整数,浮点数,数组等。

但我无法弄清楚如何获得我需要的hash_tracks指针作为第一个函数的参数(即我实际上要包装的那个)

我需要一个track_t **参数(不仅仅是一个track_t *参数)的原因是hash_tracks是一个哈希表(使用uthash库),因此指向轨道表的指针可以随着函数的添加而改变。删除其实现中的track_t结构。

我很难理解如何从python中调用这样的函数。也许我需要在C中实现一些“帮助”功能或使用一些SWIG类型图来实现它?

1 个答案:

答案 0 :(得分:1)

我想你想使用INOUT typemap,在这里记录:

http://www.swig.org/Doc2.0/Arguments.html#Arguments_nn6