如何用Python以编程方式包装C ++ DLL

时间:2016-05-03 10:51:57

标签: python-3.x dll ctypes

我知道如何使用ctypes通过创建"包装器"来使用Python中的C ++ .dll调用函数。将Python输入类型强制转换为C的函数。我认为这实际上是在Python中重新创建函数签名,其中函数体包含强制转换为C的类型和相应的.dll函数调用。

我目前有一组C ++ .dll文件。每个库都包含许多函数,其中一些函数已经过载。我的任务是为每个.dll文件编写一个Python接口。我现在的前进方向是使用我拥有的锤子"并仔细检查每个函数,为每个函数精心制作相应的Python包装器...这将涉及我查看.dll中每个函数的API文档并逐个编码。不过,我的直觉告诉我,可能有一种更有效的方法来解决这个问题。

我的问题是:是否有一种与Windows C ++ .dll接口的编程方式,不需要为每个函数制作相应的包装器?感谢。

1 个答案:

答案 0 :(得分:2)

我建议使用Cython进行包装。 Cython允许您直接使用C / C ++代码,只需很少的更改(除了一些样板)。对于包装大型库,通常可以通过最少的额外包装工作(例如在Ctypes中)快速获得并快速运行。我的经验也是Cython可以更好地扩展...虽然需要更多的前端工作来支持Cython而不是Ctypes,但在我看来,它更易于维护,并且非常适合程序生成包装代码到你提到的那个。