在 python 中导入 C++ 类?
Posted
技术标签:
【中文标题】在 python 中导入 C++ 类?【英文标题】:Import C++ classes in python? 【发布时间】:2009-11-17 17:39:56 【问题描述】:所以.. 假设我有这个 C 函数:
PyObject* Foo(PyObject* pSelf, PyObject* pArgs)
MessageBox(NULL, "Foo was called!", "Info", MB_OK);
return PyInt_FromLong(0);
然后,我必须这样做:
static PyMethodDef Methods[] =
"Foo", Foo, METH_NOARGS, "Dummy function",
NULL, NULL, 0, NULL
;
Py_InitModule("bar", Methods);
然后我执行我的 python 脚本.. 但是 C 函数有点烦人,它是 C++,我几乎所有东西都使用类。
那么,有什么方法可以将成员函数从一个类导入到我的 python 脚本中?
哦,顺便说一句,python 脚本看起来像这样:
import bar
from bar import *
Foo()
【问题讨论】:
【参考方案1】:boost.python 使您能够非常有效地做到这一点。
【讨论】:
【参考方案2】:SWIG 也可以很好地工作。
【讨论】:
【参考方案3】:看看boost python 页面。搜索“免费功能”。
【讨论】:
【参考方案4】:Cython 拥有我发现的最好的 C++ wrapping,尽管它比 SWIG 更冗长一些,而且它有点需要进入的心态。编写映射比 SWIG 更容易——因为它使用 Python 类型——但你必须手动编写它们。这也是一个非常活跃的项目,有一个非常友好的邮件列表。它对 NumPy 也有很好的缓冲支持。
【讨论】:
以上是关于在 python 中导入 C++ 类?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 程序将使用的 Python 脚本中导入 cpython 模块?
有没有办法使用 SWIG C++ 创建一个 python 模块,可以在 Python2 和 Python3 中导入