【发布时间】:2016-01-26 05:23:21
【问题描述】:
我正在尝试包装一个用 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 类型映射来实现它?
【问题讨论】:
标签: python c pointers struct swig