暴露C++;Python的库+;皮尔 我开始在一个巨大的C++库上使用SWIG(由几个相互依赖的静态LIBs)将其公开给Python。该库定义了许多原语类,这些原语类始终用作参数(例如,不同类型的图像)。在lib中还广泛使用了STL、继承和模板

暴露C++;Python的库+;皮尔 我开始在一个巨大的C++库上使用SWIG(由几个相互依赖的静态LIBs)将其公开给Python。该库定义了许多原语类,这些原语类始终用作参数(例如,不同类型的图像)。在lib中还广泛使用了STL、继承和模板,c++,python,python-imaging-library,C++,Python,Python Imaging Library,到目前为止,我有一个可以从Python使用的库的最小部分,但希望逐步添加剩余的90% 就我而言,使用SWIG真的没有乐趣:与模板实例化作斗争,学习所有SWIG语法和关键字,等等。我最近玩了一些CTypes,发现它非常有趣,我现在考虑为整个库编写一个extern C接口,而不是使用SWIG 我宁愿用C/C++和/或Python编写代码,也不愿学习一组晦涩难懂的SWIG命令(这也适用于SIP) 有相当多的问题已经提出了类似的建议,因此我将添加一些新的和具体的内容: 我希望库的内部图像类在python

到目前为止,我有一个可以从Python使用的库的最小部分,但希望逐步添加剩余的90%

就我而言,使用SWIG真的没有乐趣:与模板实例化作斗争,学习所有SWIG语法和关键字,等等。我最近玩了一些CTypes,发现它非常有趣,我现在考虑为整个库编写一个extern C接口,而不是使用SWIG

我宁愿用C/C++和/或Python编写代码,也不愿学习一组晦涩难懂的SWIG命令(这也适用于SIP)

有相当多的问题已经提出了类似的建议,因此我将添加一些新的和具体的内容:

我希望库的内部图像类在python中以PIL图像的形式透明可见,而不是以SWIG包装的本机类的形式可见。我是否需要借助普通的python外部API来实现这一点


我欢迎任何建议

您是否考虑过使用Boost.Python?

当然,我在搜索时遇到过它,但我以前从未使用过Boost。在没有冲突的情况下,安装标准C++库是否安全?(我使用的是VisualStudio2005,在使用MSVC6.0和Roguewave++shudder++时,我仍然会做噩梦)。那我就得好好研究一下了。谢谢你让我大开眼界!我使用GBOX和标准的C++库一起使用GCC,没有任何问题。我听说有人在VisualStudio上也这么做。Boost非常成熟,包含许多高质量的库,我非常信任它可以在生产软件中使用。我使用过Boost.Python和Luabind(类似于Boost.Python,但适用于Lua),并且对它们的易用性印象深刻。我不能相信我错过了这个线程:还有更多选项!我还没有时间调查这个问题,但应该在下个月调查。我可能会尝试一些方法,并在这里发布我的发现/意见。