将C++库暴露给Python + PIL
我开始使用SWIG来处理一个很大的C++库(这个库由几个相互依赖的静态库组成),目的是让它能在Python中使用。这个库定义了很多基本的类,这些类在整个库中作为参数被广泛使用(比如不同类型的图像)。库中还大量使用了STL、继承和模板。
到目前为止,我已经让库中的一小部分可以在Python中使用,但我希望能逐步添加剩下的90%以上的部分。
对我来说,使用SWIG真的不太好玩:我得和模板实例化斗争,还要学习各种SWIG的语法和关键字等等。最近我尝试了一下CTypes,发现这玩意儿挺有意思的,所以我现在考虑为整个库写一个外部C接口,而不是继续用SWIG。
我宁愿在写C/C++和/或Python代码,也不想学习一堆晦涩的SWIG命令(SIP也是如此)。
网上已经有不少人问过类似的问题,所以我想加点新鲜的和具体的内容:
我希望库内部的图像类能在Python中透明地显示为PIL图像,而不是作为SWIG封装的本地类。为了实现这个,我是否需要使用普通的Python外部API呢?
欢迎任何建议!
1 个回答
1
你有没有考虑过使用Boost.Python这个工具呢?