我使用的ctypes绑定如下。有没有可能在不修改全局ctypes.pythonapi.PyCapsule_New的情况下制作PyCapsule_New和其他绑定的私有副本?我是copy.deepcopy(...)它,还是有其他方法?
PyCapsule_New = ctypes.pythonapi.PyCapsule_New
PyCapsule_New.restype = ctypes.py_object
PyCapsule_New.argtypes = (ctypes.c_void_p, ctypes.c_char_p, ctypes.c_void_p)
PyCapsule_GetPointer = ctypes.pythonapi.PyCapsule_GetPointer
PyCapsule_GetPointer.restype = ctypes.c_void_p
PyCapsule_GetPointer.argtypes = (ctypes.py_object, ctypes.c_char_p)发布于 2020-07-28 05:55:43
从实验来看,这是等价的(相同的DLL句柄,不同的包装器实例)。
>>> import ctypes,sys
>>> ctypes.pythonapi
<PyDLL 'python dll', handle 5f6b0000 at 0x182add5f0b8>
>>> ctypes.PyDLL(f'python{sys.version_info.major}{sys.version_info.minor}')
<PyDLL 'python36', handle 5f6b0000 at 0x182add43a20>同样,您可以分别使用WinDLL和'CDLL‘代替全局winapi和cdll。
https://stackoverflow.com/questions/63123838
复制相似问题