我正在尝试使用python脚本来测试我的C代码。到目前为止,我的发现是
1)使用Ctypes,我可以轻松加载,并直接从python调用函数。此外,一切都在运行时发生,因此没有额外的编译/包装。
2)但是,在python中重写每个类型都是单调乏味且容易出错的,特别是对于复杂的数据类型。每当定义发生变化时,我都必须在python脚本中更新定义。
我想知道,因为Swig可以自动导出数据类型,是否可以将Swig和Ctypes混合在一起?即使用Swig导出数据类型,可用于通过Ctypes调用函数。
p.s我不确定Cython是否更适合,但我们在环境中没有Cython。
答案 0 :(得分:0)
我最终使用Swig与动态链接到C代码生成的so库。通过这种方式,我只需要在swig接口文件中包含头文件,以告知swig要公开的函数/数据类型。这种方法的另一个优点是我可以用C编写测试辅助函数,并且很容易公开它们。