将C++库暴露给Python + PIL

3 投票
1 回答
1064 浏览
提问于 2025-04-16 12:46

我开始使用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这个工具呢?

撰写回答