c/c++语言开发共享Python C API如何将结构数组从C传递给Python

对于我正在创建的python模块,我想向python用户传递一个这样的结构数组:

struct tcpstat { inet_prefix local; inet_prefix remote; int lport; int rport; int state; int rq, wq; int timer; int timeout; int retrs; unsigned ino; int probes; unsigned uid; int refcnt; unsigned long long sk; int rto, ato, qack, cwnd, ssthresh; }; 

我认为Py_BuildValues是我正在寻找的function。 但似乎不是。 查看Python文档,我找到了缓冲协议 。 但这是我第一次开发python模块,官方文档对我没什么帮助。

缓冲协议是我问题的最佳解决方案吗? 如果是这样,我怎么能将我的数组从C返回到python?

    最后我做的是使用PyListObject创建一个列表对象,并在该列表中附加一个字典,其中包含我要向python用户显示的struct的值。

    希望这会帮助有同样疑问的人,这里是代码:

    需要了解更多c/c++开发分享Python C API如何将结构数组从C传递给Python,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

     PyObject *dict = NULL; PyListObject *list; list = (PyListObject *) Py_BuildValue("[]"); int i = 0; for (i; i < stats_length; i++) { dict = Py_BuildValue("{s:i}", "LPort", stats[i].lport); PyList_Append(list, dict); } return (PyObject *) list; 

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

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐