I need a simple way to pass a C struct to a Python function. I have embedded Python into a game server, and I intend to write game logic in Python. I’ve scoured Google and mailing lists and found nothing useful. I have a complex structure in C (with pointers to other relatively complex structures) and have found no reasonable way of doing this.
I have this struct:
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;
};
And need to pass it to a Python function where I can easily access the members with common syntax (preferably not the use of things like dicts although that’s alright too). It’s almost like I need a PyObject_FromStruct function or something.
Is there any relatively simple way to do this?
i think that the most simple way may be to write get()/set() functions for every element in the structure (ex: get_addr() which gets the address value) and then:
Option 1 (i think it is the simplest) :compile your c code as dll file with get/set exported and load it into python to call “get” functions
(check my post here for using dll in python and this Q&A may be useful for using .so files in linux
Option 2 :you may use SWIG to get the pyd file and import it into python to call “get/set” functions
using this way python is dealing only with pointee NOT pointers and do not involve any memory addresses usage.