我有几个(比方说5-10个(大型C++项目。每个文件大概有30-50个。这些项目由其他团队维护,我不能修改他们的代码。完全
我需要在Python脚本中调用这些项目,该脚本应该调用所有项目中的函数(显然,这些项目中的每个顶级函数都会创建一个跨越多个文件的大型调用树(。
有没有一种方法可以在不修改任何C++代码的情况下,从这些大型C++项目中调用Python中的C++函数?
是的,这是可能的。像OpenCV这样的主要库是在C++中实现的,并且有Python绑定可以从Python中使用它们。
实现这一目标有许多相互竞争的方法,您可以在此处阅读概述。我相信现在最常见的是Cython和PyBind11。
从Python调用C或C++基本上包括定义一个Python可以理解的接口(转换为C和C++代码使用的数据类型或从中转换(,并编译该接口。像Cython这样的工具允许您用接近Python的语言编写该接口,并为您生成相应的、相当丑陋的C++接口,以便对其进行编译。
请注意,您将只需要为您想要使用的函数编写接口,而不管";调用树";这些函数将生成。你根本不需要接触C++项目,只需要添加可以在你的项目中使用的接口。