将ctypes.c_void_p转换为PyCapsule

2024-06-09 03:44:32 发布

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

我在一个库中有一个python方法,它将函数句柄作为ctypes.c_void_p返回。我需要将句柄传递给另一个库,该库希望它作为胶囊。如何将c_void_p转换为胶囊以促进这种互操作


Tags: 方法函数ctypes句柄void胶囊
1条回答
网友
1楼 · 发布于 2024-06-09 03:44:32

像这样:

import ctypes
PyCapsule_Destructor = ctypes.CFUNCTYPE(None, ctypes.py_object)
PyCapsule_New = ctypes.pythonapi.PyCapsule_New
PyCapsule_New.restype = ctypes.py_object
PyCapsule_New.argtypes = (ctypes.c_void_p, ctypes.c_char_p, PyCapsule_Destructor)
capsule = PyCapsule_New(0xdeadbeef, None, PyCapsule_Destructor(0))

相关问题 更多 >