【发布时间】:2014-09-13 19:01:33
【问题描述】:
我正在尝试使用 ctypes 为 C 库制作 python 包装器。该库的函数需要一个指向要传递的结构的指针,该指针充当将来调用的句柄。
该结构具有指向另一个内部结构的指针,该结构进一步具有指向其他结构的指针。
typedef struct varnam {
char *scheme_file;
char *suggestions_file;
struct varnam_internal *internal;
} varnam;
varnam_internal 结构具有指向 sqlite 数据库等的指针
struct varnam_internal
{
sqlite3 *db;
sqlite3 *known_words;
struct varray_t *r;
struct token *v;
...
}
我尝试根据this SO 回答忽略 varnam_internal 结构。类似的东西
class Varnam(Structure):
__fields__ = [("scheme_file",c_char_p),
("suggestions_file",c_char_p),("internal",c_void_p)]
但这似乎不起作用,因为我认为库需要分配varnam_internal 才能正常运行。
我应该在 python 中实现所有依赖结构吗? ctypes 适合包装这样的库吗?我已经阅读过像 Cython 这样的替代品,但我没有使用 Cython 的经验,所以这可行吗?
【问题讨论】: