Python ctypes 模块
❮ 标准库模块定义和用法
ctypes 模块提供与 C 语言兼容的数据类型,并允许调用 DLL/共享库中的函数。
使用它来封装本地库、定义 C 结构体,并与系统 API 进行互操作,而无需编写扩展模块。
成员
| 成员 | 描述 |
|---|---|
| addressof() | 返回参数的内存地址。 |
| alignment() | 返回 ctypes 类型或实例的对齐要求。 |
| byref() | 返回 ctypes 实例的按引用传递对象。 |
| c_bool | C 兼容的布尔类型。 |
| c_byte | 有符号字符。 |
| c_char | C 字符类型。 |
| c_char_p | C char*(以空字符结尾的字符串)类型。 |
| c_double | C 双精度浮点数类型。 |
| c_float | C 浮点数类型。 |
| c_int | C 语言 int 类型。 |
| c_int16 | 16 位有符号整数。 |
| c_int8 | 8 位有符号整数。 |
| c_long | C 语言 long 类型。 |
| c_longlong | C 语言 long long(64 位)类型。 |
| c_short | C 语言 short 类型。 |
| c_size_t | C 语言 size_t 类型。 |
| c_ssize_t | C 语言 ssize_t 类型。 |
| c_uint | C 语言 unsigned int 类型。 |
| c_uint16 | 16 位无符号整数。 |
| c_uint8 | 8 位无符号整数。 |
| c_ulong | C 语言无符号长整型。 |
| c_ulonglong | C 语言无符号长长整型(64 位)类型。 |
| c_void_p | C 语言 void* 类型。 |
| c_wchar | C 语言宽字符。 |
| c_wchar_p | C 宽字符*(UTF-16/32,取决于平台)。 |
| cast() | 将 ctypes 实例强制转换为另一个 ctypes 类型。 |
| cdll | 使用 cdecl 调用约定的 C 库预配置加载器。 |
| CDLL() | 加载共享库(POSIX)。 |
| CFUNCTYPE() | 根据参数和结果类型(cdecl)创建 C 函数原型。 |
| create_string_buffer() | 创建可变字符缓冲区。 |
| create_unicode_buffer() | 创建一个可变的宽字符缓冲区。 |
| LibraryLoader | cdll、windll 和 oledll 使用的加载器辅助函数。 |
| memmove() | 将内存从一个地址复制到另一个地址。 |
| memset() | 用字节值填充一块内存。 |
| oledll | 预配置的 stdcall 库加载器(HRESULT 检查)。 |
| OleDLL() | 加载 Windows 标准调用 DLL 并检查 HRESULT(Windows)。 |
| pointer() | 创建指向 ctypes 实例的指针。 |
| POINTER() | 创建指向另一个 ctypes 类型的 ctypes 指针。 |
| PyDLL() | 类似于 CDLL,但确保在调用期间保持 GIL 状态(适用于 CPython API)。 |
| pythonapi | 指向 CPython C API DLL/共享库的句柄。 |
| sizeof() | 返回 ctypes 类型或实例的字节大小。 |
| string_at() | 根据内存地址和可选的长度返回一个字节对象。 |
| Structure | 用于定义 C 结构体的基类。 |
| Union | 用于定义 C 联合体的基类。 |
| WinDLL() | 加载 Windows 标准调用 DLL(Windows)。 |
| windll | Windows 上标准调用库的预配置加载器。 |
| wstring_at() | 从宽内存地址返回 Python 字符串,长度可选。 |

