【问题标题】:Exposing C++ library to Python + PIL将 C++ 库暴露给 Python + PIL
【发布时间】:2011-03-01 21:03:03
【问题描述】:

我开始在一个巨大的 C++ 库(由几个相互依赖的静态库组成)上使用 SWIG,以将其公开给 python。该库定义了许多用作参数的原始类(例如不同类型的图像)。在 lib 中也广泛使用了 STL、继承和模板。

到目前为止,我只有一小部分可用于 Python 的 lib,但我希望逐步添加剩余的 90+%。

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

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

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

我希望库的内部图像类在 python 中作为 PIL 图像透明可见,而不是作为 SWIG 包装的本机类。我是否必须求助于普通的旧 Python 外部 API完成那个?

我欢迎任何建议!

【问题讨论】:

标签: c++ python python-imaging-library


【解决方案1】:

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

【讨论】:

  • 当然,我在搜索时遇到过它,但我以前从未使用过 boost。在没有冲突的情况下与标准 C++ 库一起安装是否安全? (我使用 Visual Studio 2005 并且仍然在使用 MSVC6.0 和 Roguewave ++shudder++ 时做噩梦)。那时我将不得不真正调查一下。感谢大开眼界!
  • 我已经将 Boost 与标准 C++ 库与 GCC 一起使用,没有任何问题。我听说有人用 Visual Studio 做同样的事情。 Boost 非常成熟,包含许多高质量的库,我非常信任它可以在生产软件中使用。我使用过 Boost.Python 和 Luabind(类似于 Boost.Python,但用于 Lua)并且对它们的易用性印象深刻。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 2011-09-07
相关资源
最近更新 更多