FreeLibrary需要一个句柄,定义为C
void*指针。请参阅Windows数据类型。在函数指针的中设置
argtypes:
import ctypesfrom ctypes import wintypeskernel32 = ctypes.WinDLL('kernel32', use_last_error=True) kernel32.FreeLibrary.argtypes = [wintypes.HMODULE]一个Python的预设转换
int或
long(改名
int在Python 3)是一个C
long,其随后转换为一个C
int。微软
long甚至在64位Windows上也使用32位,这就是为什么要转换的原因
OverflowError。
在具有64位
long(即几乎所有其他所有64位OS)的平台上,将指针作为Python整数传递而未定义该函数的指针
argtypes实际上可能会隔离该过程。到的初始转换
long效果很好,因为它的大小与指针的大小相同。但是,随后强制转换为32位C
int可能会静默截断该值。



