加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将C结构传递给Python函数

发布时间:2020-12-16 07:28:16 所属栏目:百科 来源:网络整理
导读:我需要一种简单的方法将C结构传递给 Python函数.我已经将 Python嵌入到游戏服务器中,我打算用Python编写游戏逻辑.我已经搜索过谷歌和邮件列表,没有发现任何有用的东西.我在C中有一个复杂的结构(指向其他相对复杂的结构)并且没有找到合理的方法. 我有这个结构
我需要一种简单的方法将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指针,不涉及任何内存地址使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读