我正试着对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
我会尝试使用
return byref(msg)
,做一些C转换,并注意垃圾收集。但我通常从python进程调用c。你知道吗相关问题 更多 >
编程相关推荐