用C++调用Python函数

2024-09-24 08:31:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从C++中实现调用Python函数。我以为可以通过函数指针来实现,但似乎不可能。我一直在用boost.python来完成这个任务。

假设Python中定义了一个函数:

def callback(arg1, arg2):
    #do something
    return something

现在我需要把这个函数传递给C++,这样就可以从那里调用它。如何使用^ {CD1}}在C++侧编写代码来实现这个目标?


Tags: 函数代码目标return定义defcallbackdo
3条回答

一点线索也没有。但一旦拥有了function对象,就可以使用^{}来调用它。

如果它可能有名字:

将其传递给接受boost::python::object的函数。

bp::object pycb; //global variable. could also store it in a map, etc
void register_callback(bp::object cb)
{
      pycb = cb;
}

如果它位于具有一致名称的单个已知命名空间中:

bp::object pycb = bp::scope("namespace").attr("callback");

bp::object已经定义了operator(),所以您可以像调用任何函数一样调用它

ret = pycb()

我以前没有使用过它,但是参考手册中有一个名为Calling Python Functions and Methods的部分,它似乎展示了如何做到这一点。

相关问题 更多 >