将ctypes C结构返回到C

2024-07-03 07:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着对cTypesAPI了如指掌。我希望在Python中创建一个C结构(zmsg\u t),然后从Python返回到C

所以Python方法是从C调用的,需要返回一个对象,然后用C再次处理这个对象。你知道吗

我有一个绑定来访问和创建C方法和结构,因此在Python中我可以调用Zmsg()构造函数。我现在需要归还这个。你知道吗

我的python测试方法很简单:

def actor_test(*args, **kwargs):
    print("test")
    msg = Zmsg()
    frame = Zframe(b"Hello", 5)
    msg.prepend(frame)
    return msg

从C调用方法如下:

PyObject *pReturn = PyObject_CallObject(pFunc, NULL);

这将正确地调用方法。但是,返回的对象当然是PyObject*。调试器说是

"<czmq._czmq_ctypes.Zmsg object at 0x7ffff5f18e50>"    PyObject
            [class]    "<class 'czmq._czmq_ctypes.Zmsg'>"   
            [super class]    "<class 'object'>"   
            [meta type]    "<class 'type'>"   
            ob_refcnt    1    Py_ssize_t

我怎样才能把它恢复到原来的C类型(zmsg\u t*)

非常感谢您的帮助。你知道吗

Zmsg的ctypes定义可以看到here


Tags: 对象方法testobjecttypemsgctypes结构