ctypes的use_errno参数与共享库类和函数原型之间的区别是什么?
在Python中,有一些类,比如共享库类,包括CDLL
、OleDLL
和WinDLL
,它们都有一个叫use_errno
的参数。还有一些函数原型,比如CFUNCTYPE
和WINFUNCTYPE
,它们也有这个参数。那么,我应该在什么时候以及对哪个组传递use_errno=True
,而这样做的原因是什么呢?
1 个回答
0
这是关于它被纳入的错误追踪器:
这个补丁为ctypes库中的外部函数添加了新的调用方式,方法是向CDLL或WinDLL构造函数传递'errno=True'或'GetLastError=True'。
如果使用CDLL(..., errno=True)或WinDLL(..., errno=True),那么在实际调用函数之前,CDLL或WinDLL实例中的函数对象会把C语言中的全局错误码errno设置为零,并在调用后把C语言中的全局errno值作为'errno'属性附加到函数对象上。这个属性是存储在每个线程的本地存储中的。