将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