在Python中使用C头文件定义的结构体作为数据类型

1 投票
1 回答
2264 浏览
提问于 2025-04-17 14:17

我该如何在我的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函数可能是最简单的选择。

撰写回答