我正在尝试使用ctypes为C库制作一个python包装器。这个库的函数需要一个指向要传递的结构的指针,该指针充当将来调用的句柄。在
此结构有指向另一个内部结构的指针,而另一个内部结构又有指向其他结构的指针。在
typedef struct varnam {
char *scheme_file;
char *suggestions_file;
struct varnam_internal *internal;
} varnam;
varnam_internal
结构有指向sqlite数据库的指针,等等
我试着根据this忽略varnam_的内部结构。有点像
class Varnam(Structure):
__fields__ = [("scheme_file",c_char_p),
("suggestions_file",c_char_p),("internal",c_void_p)]
但这似乎行不通,因为我认为库需要分配varnam_internal
才能正常工作。在
我应该在python中实现所有的依赖结构吗?ctypes适合这样包装库吗?我读过类似Cython这样的替代品,但我对Cython没有经验,所以这是否可行?在
没有理由在ctypes中定义
varnam_internal
结构,因为您不需要访问它。不管您是否定义了结构,调用的库都会分配它。不管你遇到什么问题,都不是因为你没有在ctypes中定义结构。在确保您正确地调用了
varnam_init
。它使用指向指针的指针作为参数,这意味着您不能直接使用Varnam
类。你会想做这样的事情:上面的代码完全没有经过测试,但是向您展示了应该如何调用
varnam_init
。在相关问题 更多 >
编程相关推荐