[英]C++ API as an Python Extension Module
由于API的固有可调用性,是否可以始终使用给定的源代码将用C或C ++编写的API制成一个库,然后从Python对其进行调用?
换句话说,给定一个C / C ++ API,您可以在源代码上使用distutils运行setup.py脚本并有效地使用python程序中的C / C ++ API吗?
它比运行setup.py脚本要复杂得多,但是有一些包装C / C ++库的工具,因此您可以从Python使用它们。 一些受欢迎的是:
某些项目使用其他工具来生成Python绑定,并且它们很可能会被重用(需要花费大量的精力)。 PyQt4使用SIP ,PySide(另一种Qt绑定)具有shiboken ,而GTK等。 有Gobject自省 。
并不是那么简单,但是基本上您可以使用SWIG来完成,这将生成必要的包装器来绑定您的python和C / C ++代码。 http://www.swig.org/Doc1.3/Python.html
没有将C ++ API绑定到Python的固有或自动机制。 必须手动完成。 我见过的最好的工具就是Boost Python。
当然,考虑到C ++面向对象的编程和Python OO代码之间的清晰映射,创建一个解析C ++头文件并生成绑定声明的脚本应该不会太困难。 GCC-XML将为您提供已解析标头的xml表示形式,可通过python脚本轻松查询以生成绑定。 就是说,我可能没有想到很多细节,这可能会阻止这种方法的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.