Python ctypes 教程

轻松调用 C 语言函数,无需编写 C 扩展

什么是 ctypes?

ctypes 是 Python 标准库中的一个模块,用于在 Python 中加载和调用动态链接库(如 Windows 的 .dll 或 Linux/macOS 的 .so/.dylib),并能与 C 兼容的数据类型进行交互。

它无需编译,纯 Python 实现,非常适合快速集成已有的 C 库。

基础用法示例

以下代码展示了如何调用系统标准 C 库中的 printf 函数(Linux/macOS):

import ctypes

# 加载 C 标准库(Linux/macOS)
libc = ctypes.CDLL("libc.so.6")  # macOS 可能是 libSystem.dylib

# 调用 printf
libc.printf(b"Hello from C!\\n")

在 Windows 上调用 msvcrt.dll

import ctypes

msvcrt = ctypes.CDLL("msvcrt.dll")
msvcrt.printf(b"Hello from Windows C!\\n")

数据类型映射

ctypes 提供了与 C 类型对应的 Python 类型:

示例:传递参数并获取返回值

import ctypes

libc = ctypes.CDLL("libc.so.6")
libc.abs.argtypes = [ctypes.c_int]
libc.abs.restype = ctypes.c_int

result = libc.abs(-42)
print(result)  # 输出: 42

定义 C 结构体

可以使用 ctypes.Structure 定义与 C 对应的结构体:

import ctypes

class Point(ctypes.Structure):
    _fields_ = [("x", ctypes.c_int),
                ("y", ctypes.c_int)]

p = Point(10, 20)
print(f"Point: ({p.x}, {p.y})")

常见问题与技巧

  1. 字符串必须是 bytes:传入 C 函数的字符串需用 .encode() 转换。
  2. 指定 argtypes 和 restype:避免类型错误,提高稳定性。
  3. 处理回调函数:使用 ctypes.CFUNCTYPE 定义 Python 回调供 C 调用。
  4. 跨平台注意库名差异:Windows 用 .dll,Linux 用 .so,macOS 用 .dylib

实战:调用自定义 C 库

假设你有一个 C 文件 math_utils.c

// math_utils.c
int add(int a, int b) {
    return a + b;
}

编译为共享库:

# Linux
gcc -shared -fPIC -o libmath.so math_utils.c

# Windows (MinGW)
gcc -shared -o math.dll math_utils.c

Python 调用:

import ctypes

lib = ctypes.CDLL("./libmath.so")  # 或 ./math.dll
lib.add.argtypes = [ctypes.c_int, ctypes.c_int]
lib.add.restype = ctypes.c_int

print(lib.add(3, 5))  # 输出: 8
用什么AI搜题准确率高?2026年主流AI搜题工具对比分析 AI检测工具指南 - 如何准确识别AI生成内容及降AIGC解决方案 AI如何根据要求写论文 | 智能写作指南与降AI率工具推荐 文献综述AI自动生成免费工具 | 学术写作助手专题 大学生抄袭论文后果及防范措施 | 学术诚信专题 写作课哪个平台最好排行榜 | 2026年权威写作学习平台评测 AI生成知识图谱:技术解析与应用实践 | 人工智能知识管理专题 手机AI写作指南:最佳工具推荐与小发猫降AIGC教程 AI智能论文写作指南 | 小发猫降AIGC工具应用专题 AI免费写小说 - 人工智能辅助创作工具专题 本科毕业论文打印店泄露风险与防范 - 学术安全专题 暴雨洪涝灾害风险评估专题 | 防灾减灾与智能分析 单机版论文查重软件 - 高效本地化论文检测工具 如何用AI高效撰写文献报告 | AI写作技巧与降AIGC方法 论文发表查重率要求详解 | 学术期刊标准与降AIGC方案 毕业论文校内查重详解 - 知乎常见问题与降AIGC方法 大学生AI写作论文指南 | 智能工具辅助学术研究 AI写论文被查出来咋办?应对AI检测的完整指南 | 学术写作专题 AI扩写论文技巧与降AIGC攻略 | 智能写作辅助指南 如何成功发表论文 | 学术发表全流程指南与AI内容优化技巧 严伯钧AI课程淘宝专题页 - 人工智能大师课深度解析与学习指南 论文批量修改文字技巧 | 高效降AIGC率工具使用指南 如何用AI高效查文献综述 | AI学术研究工具指南 文章AI写作神器哪个好用免费?2026年免费AI写作工具推荐 本科论文数据造假会查吗?论文查重与学术规范深度解析 反AI检测原理详解 | AI内容识别与规避技术解析 检测AI写作作文的原理详解 | 人工智能文本识别技术 论文知网查重费用全解析 | 专业查重指南与降AIGC方案 电大论文会查重吗?了解查重政策与降AIGC方法 | 电大学术专题 手机AI写作全攻略:高效创作与降AIGC工具指南 | 移动端智能写作专题 期刊论文查重率指南:正常范围、影响因素与AIGC检测应对 熊猫论文查重券安全吗?| 专业评测与AIGC检测工具推荐 AI智能监测系统 - 智能识别与行为分析解决方案 写论文数据怎么找 | 学术研究数据资源完全指南 自媒体免费AI自动生成文章全攻略 | 高效内容创作与AIGC降重指南 2024本科论文抽检会查代码吗?论文代码检测与降AI率指南 论文抽检平台作用解析 | 确保学术质量,防范学术不端 论文上传确认指南 | 如何确保论文成功上传系统 AI写论文会被判定抄袭吗?深度解析与解决方案 AI改写论文会被查吗?- 详解AI论文检测与降AIGC方法 严伯钧AI精品课 - 探索人工智能前沿知识体系 AI写作专题:每个人用AI写的论文会雷同吗? 免费文章错别字检测软件推荐 | 专业校对工具大全 中国的论文查AI吗?- 论文AI检测工具与降AIGC方法解析 论文查重与文献综述指南 | 学术诚信与AI内容检测 网上写字课哪个比较好 | 2026年最佳在线书法课程推荐指南 科技论文AI写作指南 | 高效工具与降AIGC方法 如何使用AI高效撰写课程内容 | AI课程创作指南与降AI率技巧 免费AI论文写作工具推荐 | AI智能写作网站专题 免费论文检测软件推荐 | 专业论文查重工具与降AIGC方法 怎样用AI写总结报告 - AI写作与降AIGC工具使用指南 AI写论文免费版入口 | 智能论文助手 | 免费AI论文生成工具 论文AIGC在哪查?- 专业AIGC检测与降重工具推荐 查重查不到的资料在哪里?| 专业学术资源查找指南 论文查重权威机构推荐 | 正规检测平台与降AIGC工具使用指南 论文检测与查询 - 专业学术论文查重与AIGC降重工具指南 硕士毕业论文如何降低查重率 | 高效降重方法与工具推荐 关于爱的文章开头写作指南 - 如何写出触动人心的开篇 论文修改查重技巧专题 | 高效降重方法与工具推荐 洪涝最高水位线专题 | 历史数据、监测技术与防灾指南 本科论文重新抽查指南 | 如何应对论文AI率检测 | 小发猫降AIGC工具 AI读文章应用推荐 | 智能朗读工具与降AIGC解决方案 AI专家项目 | 专业人工智能解决方案与降AI率工具推荐 论文AI写作工具哪个最好用?2026年深度评测与推荐 | 学术写作助手指南 AI语音原理底层逻辑解析 | 语音识别与合成技术详解 AI与隐私安全:使用人工智能导致隐私泄露的案例分析 | 隐私保护专题 AI文章生成器在线生成 - 智能创作与AIGC内容优化工具 怎么让AI写出高质量的文献综述 | AI学术写作指南与降AIGC工具推荐 高效SCI降重机构 | 专业论文降重与AI率降低服务 论文查重时是否可以删除英文内容?专业分析 毕业论文查不查AI率?如何应对AI检测与使用降AIGC工具-小发猫 如何检查论文错别字 | 专业校对指南与降AIGC工具推荐 AI论文专业英文翻译服务 | 学术论文翻译解决方案 论文查重范围详解 | 学术不端检测覆盖内容与降AIGC指南 如何用AI做设计论文 | AI辅助学术研究全攻略 硕士论文表格怎么降重?高效降重方法与工具推荐 | 学术论文专题 如何用AI写论文总结 | AI写作技巧与降AIGC方法 AI毕业设计写作指南 - 高效完成学术论文的技巧与工具 论文重复率太低了怎么办?解决方案与AI工具使用指南 网上学写字课程 | 专业硬笔书法在线教学平台 人工智能毕业绘画设计 | AI辅助艺术创作与降AIGC工具应用 AI写论文查重率会高吗?AI论文降重与查重率解析 使用AI会泄露信息吗?- AI隐私风险与防护指南 中国知网论文检测专题 - 学术不端检测与AIGC降重工具 本科毕业论文优秀良好比例分析 | 评定标准与数据解读 论文选题指南:如何选择高质量的研究课题 | 学术写作专题 如何通过AI高效完成毕业论文 | AI论文写作与降AIGC工具指南 洪涝水文水位监测预警系统 - 实时预警与智能防洪解决方案 用什么翻译软件AI查不出来?深度解析与降AI率工具推荐 知网发表论文有稿费吗?- 学术发表稿费政策详解 AI写毕业论文行业解析 | 学术诚信与工具应用指南 论文翻译技巧:中英互译优化与AI降重方法 | 学术翻译指南 AI会不会干掉数据分析?探讨人工智能与数据分析的未来关系 SCI论文格式要求详解 | 学术写作规范与降AIGC技巧 AIGC降重口令 - 小发猫降AI率工具使用方法详解 网上AI图片都是怎么制作的?- AI图片生成原理与方法详解 研究综述模板专题 - 学术写作指南与AIGC检测工具 手机上写简历用什么软件?2026年移动端简历工具推荐专题 本科毕业论文AI查重吗?- 详解AI检测与降AIGC方法 AI万能写作全解析:效率提升与原创性保障指南