将Python实例转换为ctypes.c\u void\u p
我正在尝试将Python对象转换为C void指针,以便可以从C API调用它,但是下面的代码似乎不起作用 从ctypes导入*将Python实例转换为ctypes.c\u void\u p,python,c,ctypes,Python,C,Ctypes,我正在尝试将Python对象转换为C void指针,以便可以从C API调用它,但是下面的代码似乎不起作用 从ctypes导入* class myclass: def __init__(self): self.val = 6 return foo = myclass() data = c_void_p(foo) 输出: Traceback (most recent call last): File "test.py", line 26, in
class myclass:
def __init__(self):
self.val = 6
return
foo = myclass()
data = c_void_p(foo)
输出:
Traceback (most recent call last):
File "test.py", line 26, in <module>
data = c_void_p(foo)
TypeError: cannot be converted to pointer
回溯(最近一次呼叫最后一次):
文件“test.py”,第26行,在
数据=c_void_p(foo)
TypeError:无法转换为指针
我也尝试过pointer()和byref(),但它们都不起作用。我怎样才能实现我想做的事?提前感谢。使用
data=ctypes.py\u对象(foo)
ctypes.py_对象
表示C中的PyObject*
类型。我认为我们需要查看用例。是否要传递指向“C”API的指针。你有使用它的例子吗?@quamrana让我们假设我在C中有这个代码:void bar(void*obj){printf(“%d\n”,(int*)obj)},那么我需要将数据强制转换到C_void_p以便将其传递给这个函数。也许你的意思是data=C_void_p(foo.val)
如果C函数本身要恢复一个int
@quamrana,我将尝试用多个属性传入整个对象,因此此方法仅适用于基本类型。