Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python实例转换为ctypes.c\u void\u p_Python_C_Ctypes - Fatal编程技术网

将Python实例转换为ctypes.c\u void\u p

将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

我正在尝试将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 <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,我将尝试用多个属性传入整个对象,因此此方法仅适用于基本类型。