【问题标题】:Import C++ classes in python?在 python 中导入 C++ 类?
【发布时间】: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()

【问题讨论】:

    标签: c++ python


    【解决方案1】:

    boost.python 使您能够非常有效地做到这一点。

    【讨论】:

      【解决方案2】:

      SWIG 也可以很好地工作。

      【讨论】:

        【解决方案3】:

        看看boost python 页面。搜索“免费功能”。

        【讨论】:

          【解决方案4】:

          Cython 拥有我发现的最好的 C++ wrapping,尽管它比 SWIG 更冗长一些,而且它有点需要进入的心态。编写映射比 SWIG 更容易——因为它使用 Python 类型——但你必须手动编写它们。这也是一个非常活跃的项目,有一个非常友好的邮件列表。它对 NumPy 也有很好的缓冲支持。

          【讨论】:

            猜你喜欢
            • 2021-09-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-15
            • 1970-01-01
            • 2021-05-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多