没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论

























CFFI 文档
发布 1.14.0
Armin Rigo, Maciej Fijalkowski, Jairo(翻译者)
2020 年 02 月 12 日


Contents
1 目标 3
2 意见和错误 5
3 有什么新变化 7
3.1 v1.14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 v1.13.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 v1.13.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4 v1.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5 v1.12.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6 v1.12.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.7 v1.12.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.8 v1.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.9 旧版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 安装和状态 21
4.1 特定于平台的说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 概览 25
5.1 主要使用方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2 其他 CFFI 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3 嵌入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.4 究竟发生了什么? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.5 ABI 与 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6 使用 /lib 对象 37
6.1 使用指针,结构体和数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2 Python 3 支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3 调用类似 main 的一个例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
i

6.4 函数调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.5 可变函数调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.6 内存压力 (PyPy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.7 外部”Python” (新式回调) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.8 回调 (旧式) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.9 Windows: 调用约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.10 FFI 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7 CFFI 参考 55
7.1 FFI 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2 转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8 编写和分发模块 71
8.1 /builder.cdef(): 声明类型和函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.2 .dlopen(): 以 ABI 模式加载库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.3 builder.set_source(): 编写 out-of-line 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.4 让 C 编译器填补空白 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.5 builder.compile() 等: 编译 out-of-line 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.6 /builder.include(): 合并多个 CFFI 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.7 .cdef() 限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.8 调试 dlopenC 库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.9 .verify(): in-line API 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.10 从 CFFI 0.9 升级到 CFFI 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9 使用 CFFI 进行嵌入 87
9.1 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.2 阅读更多 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.3 疑难解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.4 关于使用.so 的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
9.5 使用多个 CFFI 制作的 DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.6 多线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.7 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.8 嵌入和扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
ii

CFFI 文档, 发布 1.14.0
CFFI(C Foreign Function Interface) 是 Python 的 C 语言外部函数接口。Python 可以与几乎任何 C 语言代
码进行交互,基于类似 C 语言的声明,您通常可以从头文件或文档中复制粘贴。
Contents 1
剩余98页未读,继续阅读
资源评论


Jairoguo
- 粉丝: 68
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【Android应用源码】图片放大缩小旋转涂鸦源码.zip
- 【Android应用源码】图片倒影效果源码.zip
- 【Android应用源码】图片浏览器完整无BUG.zip
- 【Android应用源码】图片缩放和多点触摸(1).zip
- 【Android应用源码】图片缩放和多点触摸.zip
- 【Android应用源码】图片渲染效果(1).zip
- 【Android应用源码】图片异步缓存两层缓存.zip
- 【Android应用源码】图片渲染效果.zip
- 【Android应用源码】推箱子小游戏源码.zip
- 【Android应用源码】拖动 Button 显示效果.zip
- 【Android应用源码】完美版的Android 拼图游戏APK和工程源码.zip
- 基于西门子S7-300 PLC的多种液体全自动混合装置:全流程可视化控制与精准计量 手册
- 【Android应用源码】完美登录界面设计,附加登录下拉效果.zip
- 【Android应用源码】完全退出程序的方法.zip
- 【Android应用源码】玩乐族音乐播放器项目.zip
- 【Android应用源码】网络通信的六种方式示例代码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
