由于API的内在可调用特性,用C或C ++编写的API是否总是被创建为一个库,给定源代码,因此可以从Python中调用?
换句话说,给定一个C / C ++ API,你可以在源代码上使用distutils运行一个setup.py脚本,并有效地使用python程序中的C / C ++ API吗?
答案 0 :(得分:1)
它比运行setup.py脚本更复杂,但是有一些工具可以包装C / C ++库,因此您可以在Python中使用它们。一些流行的是:
某些项目使用其他工具来生成Python绑定,并且可能会重复使用它们(需要付出不同的努力)。 PyQt4使用SIP,PySide(另一个Qt绑定)使用shiboken,而GTK等。有Gobject introspection。
答案 1 :(得分:0)
这并不是那么简单,但基本上你可以使用SWIG来做到这一点,它将生成必要的包装器来绑定你的python和C / C ++代码。 http://www.swig.org/Doc1.3/Python.html
答案 2 :(得分:0)
没有将C ++ API绑定到Python的内在或自动机制。必须手动完成。我见过的最好的工具是Boost Python。
当然,考虑到C ++面向对象编程和Python OO代码之间的清晰映射,创建一个解析C ++头文件并生成绑定声明的脚本应该不会太困难。 GCC-XML将为您提供已解析标头的xml表示形式,可以通过python脚本轻松查询以生成绑定。也就是说,我可能没有预料到可能阻止这种方法发挥作用的大量细节。