在Python中使用C头文件定义的结构体作为数据类型
我该如何在我的Python代码中使用一个在头文件中定义的C结构体foo作为数据类型呢?
(这个文档似乎没有解决这个问题。)
typedef struct {
PyObject_HEAD
/* Type-specific fields go here. */
struct api_query query; /* instead of PyObject * type here */
} api_Request;
1 个回答
0
创建一个扩展模块并不是一件简单的事情(你链接的文档详细解释了怎么做)。要像这样包装一个C语言的结构体,你需要定义一个新的类型,并且还要实现一些Python对象常用的方法,比如构造函数、析构函数、访问方法等等。
你可能会发现ctypes
这个包会更简单一些。
更好的是,如果你只是需要创建这个结构体并发送它(就像你说的,发送到一个套接字),而且这个结构体比较简单,那么struct.pack
函数可能是最简单的选择。