用Cython或SWIG包装C++ - 什么是权衡?

use*_*030 9 c++ python swig cython

我已经阅读了几个关于Cython和Swig之间的一些差异的线索并且已经实现了这两种技术,但我仍然不确定哪条路线是最佳路线.基本上我一直在研究C++库,我想将这些函数暴露给Python.Cython似乎相当复杂,需要我为每个需要公开的C++类编写几个.pyx文件,而SWIG只为我做了工作.到目前为止,我对这些包装方法中的任何一种都没有很多经验,但似乎SWIG是包装我的C++代码的明显赢家.那么争议是什么?当我在SWIG中编写一个简单的.i文件时,为什么我要花几个小时在Cython中编写.pyx文件来包装我的C++?此外,我使用CMake作为我的构建工具,使用CMAKE比使用Cython更容易构建SWIG.我觉得我必须遗漏一些东西,因为即使像OpenCV这样的大型项目也没有使用SWIG,在我将项目专门用于SWIG之前,我想找出为什么我宁愿使用Cython或者根本不使用.以下是摘要:

我的项目:C++源代码是主要的

  • Python是一个很好的,只需要一个阻力最小的路径来暴露我的大部分C++代码.
  • 编写包装器代码很糟糕,因为现在我有两个地方来维护一个API - 我只想要一个,即C++代码.

任何意见是极大的赞赏.此外,我对xdress.org很好奇 - 看起来这个项目已经死了.