python - 将 C 结构传递给 Python 函数

标签 python c python-c-api python-c-extension

我需要一种将 C 结构传递给 Python 函数的简单方法。我已经将 Python 嵌入到游戏服务器中,我打算用 Python 编写游戏逻辑。我已经搜索过 Google 和邮件列表,但没有发现任何有用的东西。我在 C 中有一个复杂的结构(带有指向其他相对复杂结构的指针)并且没有找到这样做的合理方法。

我有这个结构:

struct client {
    int state;
    int sockfd;
    struct sockaddr_in *addr;
    struct epoll_event *epollev;
    struct buffer *in_buffer;
    struct buffer *out_buffer;
    struct packet *packet;
    struct player *player;
};

并且需要将它传递给一个 Python 函数,在那里我可以使用通用语法轻松访问成员(最好不要使用诸如字典之类的东西,尽管这也可以)。这几乎就像我需要一个 PyObject_FromStruct 函数或其他东西。

有什么比较简单的方法吗?

最佳答案

SWIG 可以处理指针,尤其是当您可以在 Python 代码中将它们视为不透明的 blob 时。

您可能还会对 Cython 有所了解 - 它是 Python 的一种方言,允许您混合使用 Python 和 C 数据类型。

关于python - 将 C 结构传递给 Python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631741/

相关文章:

c - 我们需要从其头文件导入的方法的函数原型(prototype)的原因

python - 使用 Python C 扩展获取当前工作目录

Python:PyDateTime_FromTimestamp 的用法

c++ - Hadoop 的可移植键值数据文件格式?

python - Pandas 数据框 : return row AND column of maximum value(s)

python - 如何在主窗口中插入表单

c - 当变量在中断例程中改变时,是否真的需要 volatile 关键字

从 C 中的 CSV 文件计算值的平均值

python - 如何使用正确的 dll 文件在 Cython C 扩展中启用第 3 方 C 库?

python - 如何将颜色条添加到这样创建的散点图中?