编程语言
首页 > 编程语言> > 将C结构传递给Python函数

将C结构传递给Python函数

作者:互联网

我需要一种简单的方法将C结构传递给Python函数.我已经将Python嵌入到游戏服务器中,我打算用Python编写游戏逻辑.我已经搜索过谷歌和邮件列表,没有发现任何有用的东西.我在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函数,在那里我可以使用通用语法轻松访问成员(最好不要使用像dicts这样的东西,尽管那也没关系).这几乎就像我需要一个PyObject_FromStruct函数.

有没有相对简单的方法来做到这一点?

解决方法:

我认为最简单的方法可能是为结构中的每个元素编写get()/ set()函数(例如:获取地址值的get_addr())然后:

选项1(我认为这是最简单的):使用get / set导出将您的c代码编译为dll文件并将其加载到python中以调用“get”函数
(检查我的帖子here在python中使用dll,这个Q&A对于在linux中使用.so文件可能很有用

选项2:您可以使用SWIG获取pyd文件并将其导入python以调用“get / set”函数

使用这种方式python只处理指针NOT指针,不涉及任何内存地址使用.

标签:python,c-3,python-c-api,python-c-extension
来源: https://codeday.me/bug/20190704/1378063.html