将具有抽象和普通 类 的 C++ 包导出到 Python
Export C++ Package with Abstract and Normal Classes to Python
我想从 C++ 导出 大量 抽象和普通 类 到 Python。它本质上是一个用 C++ 编码的完整包,希望它在 Python 中是 运行。除了单独包装每个 类,有没有一种方法可以轻松包装它们并让它们在 Python 中工作?
是的,如果您使用 pybind11 来包装您的 C++ 代码,这是可能的。但是您需要围绕它创建一个包装器 class。
有一个例子就是这样 here
SWIG 是另一种可能性。这一个利用您现有的 C++ 头文件。请参阅 here 并转到第 6.6.3 节以强制使用 %feature 进行自定义
创建抽象 class 构造函数
%feature("notabstract") YourClassHere
boost python and pybind11 允许您将 C++ 类 “导出”为 python 对象。
两者都提出了基于模板的类似方法。据说 Pybind11 解决方案更易于使用。如果您使用 Microsoft 工具链,您可以参考此页面以了解如何使用 pybind11 design/build python 绑定:
使用 cppyy (http://cppyy.org) 是一个选项,并且几乎是自动的:只需加载 headers 和库。如果确实有大量headers,那么你可以预编译它们。模板和 cross-inheritance 的实例化是动态完成的,在 run-time,因此不需要准备。
我想从 C++ 导出 大量 抽象和普通 类 到 Python。它本质上是一个用 C++ 编码的完整包,希望它在 Python 中是 运行。除了单独包装每个 类,有没有一种方法可以轻松包装它们并让它们在 Python 中工作?
是的,如果您使用 pybind11 来包装您的 C++ 代码,这是可能的。但是您需要围绕它创建一个包装器 class。 有一个例子就是这样 here
SWIG 是另一种可能性。这一个利用您现有的 C++ 头文件。请参阅 here 并转到第 6.6.3 节以强制使用 %feature 进行自定义
创建抽象 class 构造函数%feature("notabstract") YourClassHere
boost python and pybind11 允许您将 C++ 类 “导出”为 python 对象。 两者都提出了基于模板的类似方法。据说 Pybind11 解决方案更易于使用。如果您使用 Microsoft 工具链,您可以参考此页面以了解如何使用 pybind11 design/build python 绑定:
使用 cppyy (http://cppyy.org) 是一个选项,并且几乎是自动的:只需加载 headers 和库。如果确实有大量headers,那么你可以预编译它们。模板和 cross-inheritance 的实例化是动态完成的,在 run-time,因此不需要准备。