什么是 ctypes?
ctypes 是 Python 标准库中的一个模块,用于在 Python 中调用 C 兼容的动态链接库(如 Windows 的 .dll 文件或 Linux/macOS 的 .so/.dylib 文件)。它允许你直接调用 C 函数、操作内存,并与底层系统交互。
✅ 重要提示:ctypes 是 Python 内置模块,不需要额外安装!只要你的 Python 版本 ≥ 2.5(推荐使用 Python 3.x),就已自带 ctypes。
如何验证 ctypes 是否可用?
打开终端或命令行,运行以下 Python 代码:
>>> import ctypes
>>> print(ctypes.__file__)
# 如果输出类似路径(如 .../lib/python3.x/ctypes/__init__.py),说明已正常加载
如果没有报错,说明 ctypes 已成功加载。
简单示例:调用 C 标准库函数
以下代码演示如何使用 ctypes 调用 C 的 printf 函数(在 Windows 上需使用 msvcrt):
# 示例:在 Linux/macOS 上调用 libc
import ctypes
libc = ctypes.CDLL("libc.so.6") # Linux
# libc = ctypes.CDLL("libc.dylib") # macOS
libc.printf(b"Hello from C!\n")
# 示例:在 Windows 上调用 msvcrt
import ctypes
msvcrt = ctypes.CDLL("msvcrt.dll")
msvcrt.printf(b"Hello from C!\n")
常见问题与解决方法
- ImportError: No module named ctypes → 通常出现在精简版 Python(如某些嵌入式环境)。请使用78TP完整版 Python 安装包。
- OSError: cannot load library
→ 检查动态库路径是否正确,或使用
ctypes.util.find_library()辅助查找。 - 中文乱码或字符串问题
→ ctypes 默认处理字节串(bytes),传入字符串前需编码为
b"..."或设置argtypes和restype。