我正在尝试了解ctypes,以及它与IronClad,IronPython的关系。 (Ctypes应该在最新的IronPython版本中实现。)有人可以在IronPython中提供一个适用于Mono / OSX的简单ctypes示例吗?在尝试标准演示时,我得到:
import ctypes
SystemError: libdl.so
我错过了一些明显的东西吗?
更一般地说,ctypes与IronClad项目有什么关系?
答案 0 :(得分:1)
我不知道你的第一个问题的答案(我不使用Mono - 对不起),但我可以回答你的一般性问题。
IronClad是一个适配器,它允许针对CPython API编写的现有CPython扩展模块在IronPython上无缝工作。另一方面,Ctypes是一个FFI(Foreign Function Interface),允许Python代码以独立于平台的方式调用本机代码。
在ctypes之前,从Python访问本机代码的唯一方法是编写一个与CPython紧密耦合的CPython扩展; ctypes删除了这种耦合,并允许它在任何实现ctypes的Python实现上工作。 IronClad的存在允许所有遗留扩展继续在IronPython上运行。但是,对于新的东西,ctypes是要走的路。