无效值*

2024-04-28 21:13:13 发布

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

我定义了ctypes结构,如下所示:

class MyStruct(Structure):
    _fields_ = [('x', ctypes.c_ulonglong), ('y', ctypes.c_ulonglong)]

然后我在python中创建ctypes struct对象,并将该对象传递给cython函数。

^{pr2}$

在cython函数中,我需要调用接受MyStruct类型参数的C函数。我们需要按值传递参数,而不是通过引用。对函数的调用将使用cython,而不是通过ctypes。

我的问题是,如何从ctypes中获取C结构的实际值,然后用cython将其传递给C函数。

目前我有这样的想法:

ptr = ctypes.cast(ctypes.addressof(struct_instance), ctypes.POINTER(ctypes.c_void_p))
prt_content = ptr.contents

在prt_内容中,我有c_void_p(4),但这对我没有帮助。有人知道如何通过cython将cytpes结构传递给C函数吗,或者这根本不可能?


Tags: 对象函数参数定义ctypesstructure结构struct