C++;作为Python扩展模块的API 在C或C++中,API是否总是被编为一个库,给定源代码,并因此调用Python,因为API的固有可调用性?

C++;作为Python扩展模块的API 在C或C++中,API是否总是被编为一个库,给定源代码,并因此调用Python,因为API的固有可调用性?,c++,python,api,C++,Python,Api,换句话说,给定一个C/C++API,您可以在源代码上使用distutils运行setup.py脚本并有效地使用python程序中的C/C++API吗?这并不简单,但基本上您可以使用SWIG来实现,SWIG将生成必要的包装,以绑定python和C/C++代码 这并不是那么简单,但基本上可以使用SWIG来完成,SWIG将生成必要的包装器来绑定python和C/C++代码 这比运行setup.py脚本要复杂一些,但是有一些工具可以包装C/C++库,以便您可以从Python中使用它们。一些流行的是:

换句话说,给定一个C/C++API,您可以在源代码上使用distutils运行setup.py脚本并有效地使用python程序中的C/C++API吗?

这并不简单,但基本上您可以使用SWIG来实现,SWIG将生成必要的包装,以绑定python和C/C++代码

这并不是那么简单,但基本上可以使用SWIG来完成,SWIG将生成必要的包装器来绑定python和C/C++代码

这比运行setup.py脚本要复杂一些,但是有一些工具可以包装C/C++库,以便您可以从Python中使用它们。一些流行的是:

  • -您可以编写Python风格的代码,但您可以移植CIMC库并调用它们的函数。然后将Cython代码翻译成C并编译。有一个不受支持的工具叫做自动编写简单的包装器
  • 用于包装C++库.
  • -加载已编译的库并直接从Python调用它们。尝试根据头文件自动编写包装器

某些项目使用其他工具来生成Python绑定,它们可能会被重用(工作量不同)。PyQt4使用,PySide(另一个Qt绑定)使用,GTK等人使用。

这比运行setup.py脚本要复杂一些,但是有一些工具可以包装C/C++库,因此您可以从Python中使用它们。一些流行的是:

  • -您可以编写Python风格的代码,但您可以移植CIMC库并调用它们的函数。然后将Cython代码翻译成C并编译。有一个不受支持的工具叫做自动编写简单的包装器
  • 用于包装C++库.
  • -加载已编译的库并直接从Python调用它们。尝试根据头文件自动编写包装器

某些项目使用其他工具来生成Python绑定,它们可能会被重用(工作量不同)。PyQT4使用,PySet(另一QT绑定),GTK等。

< P>没有一个内在的或自动化的机制来将C++ API绑定到Python。这必须手动完成。我见过的最好的工具是boostpython


当然,考虑到C++面向对象编程和Python面向对象代码之间的干净映射,创建一个解析C++头文件并生成绑定声明的脚本不太困难。将为您提供解析标题的xml表示,python脚本可以轻松查询这些标题以生成绑定。也就是说,可能有很多细节我没想到会阻止这种方法的工作。

< P>没有一个内在的或自动化的机制来将C++ API绑定到Python。这必须手动完成。我见过的最好的工具是boostpython


当然,考虑到C++面向对象编程和Python面向对象代码之间的干净映射,创建一个解析C++头文件并生成绑定声明的脚本不太困难。将为您提供解析标题的xml表示,python脚本可以轻松查询这些标题以生成绑定。也就是说,可能有很多细节我没有预料到,这可能会阻止这种方法工作。

那么,源代码将被手动修改为使用distutils。我将尝试这些建议并返回选择答案。好的,源代码将被手动修改为使用distutils。我将尝试这些建议并返回选择答案。对于那些决定使用Cython的人,我实际上写了一篇关于它的小帖子,涵盖了从编写Cython源文件到构建它们的所有细节,编写setup.py-基本上你需要用Cython for Python包装你的C/C++库:对于那些决定使用Cython的人,我实际上写了一篇关于它的小文章,涵盖了从编写Cython源文件到构建它们的所有细节,编写setup.py—基本上就是使用Cython for Python包装C/C++库所需的全部内容: