Python& C:可以将Ctypes和Swig混合在一起吗?

时间:2013-02-15 02:09:33

标签: python c swig ctypes

我正在尝试使用python脚本来测试我的C代码。到目前为止,我的发现是

1)使用Ctypes,我可以轻松加载,并直接从python调用函数。此外,一切都在运行时发生,因此没有额外的编译/包装。

2)但是,在python中重写每个类型都是单调乏味且容易出错的,特别是对于复杂的数据类型。每当定义发生变化时,我都必须在python脚本中更新定义。

我想知道,因为Swig可以自动导出数据类型,是否可以将Swig和Ctypes混合在一起?即使用Swig导出数据类型,可用于通过Ctypes调用函数。

p.s我不确定Cython是否更适合,但我们在环境中没有Cython。

1 个答案:

答案 0 :(得分:0)

我最终使用Swig与动态链接到C代码生成的so库。通过这种方式,我只需要在swig接口文件中包含头文件,以告知swig要公开的函数/数据类型。这种方法的另一个优点是我可以用C编写测试辅助函数,并且很容易公开它们。