使用 SWIG 包装结构**(指向指针的指针)参数

Wrapping struct** (pointer to pointer) arguments with 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 是一个散列-table(使用 uthash库),因此指向轨道 table 的指针可以随着函数在其实现中添加和删除 track_t 结构而改变。

我不知道如何从 python 调用这样的函数。也许我需要在 C 中实现一些 'helper' 函数或使用一些 SWIG 类型映射来实现它?

我想你想使用 INOUT 类型映射,在此处记录:

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