c/c++语言开发共享将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(我认为这是最简单的):将你的c代码编译为带有get / set导出的dll文件并将其加载到python中以调用“get”函数( 在这里查看我的post,在python中使用dll,这个Q&A可能很有用在linux中使用.so文件

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

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

    SWIG可以做指针,特别是如果你可以在Python代码中将它们视为不透明的blob。

    您可能也会使用Cython – 它是Python的一种方言,允许您混合使用Python和C数据类型。

    你最好的选择是像swig ,但我认为指针会给你带来麻烦。

    我将结构包装在python可以使用boost :: python消化的东西中。 然后访问要导出到python的function。

      以上就是c/c++开发分享将C结构传递给Python函数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/541926.html

      (0)
      上一篇 2021年1月5日
      下一篇 2021年1月5日

      精彩推荐