c++ 将PyCapsule转换为ctypes.c_void_p

lndjwyie  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(160)

我在一个库中有一个python方法,它以PyCapsule的形式返回一个图像句柄。我需要将这个句柄传递给另一个库,它期望它以c_void_p的形式返回。我如何将这个容器转换成c_void_p来促进这个互操作?
我在Python中尝试了以下类型转换,但没有效果

addr = ctypes.py_object(capsule)
ars1skjm

ars1skjm1#

谢谢。以下实现工作正常。

ctypes.pythonapi.PyCapsule_GetName.restype = ctypes.c_char_p
ctypes.pythonapi.PyCapsule_GetName.argtypes = [ctypes.py_object]
name = ctypes.pythonapi.PyCapsule_GetName(capsule)

ctypes.pythonapi.PyCapsule_GetPointer.restype = ctypes.c_void_p
ctypes.pythonapi.PyCapsule_GetPointer.argtypes = [ctypes.py_object, ctypes.c_char_p]
addr = ctypes.pythonapi.PyCapsule_GetPointer(capsule, name)

addr = ctypes.c_void_p(addr)

相关问题