从C++调用Python函数

18 投票
4 回答
12468 浏览
提问于 2025-04-16 07:55

我想要在C++中调用Python的函数。我原以为可以通过函数指针来实现,但似乎不行。我一直在使用boost.python来完成这个任务。

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

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

现在我需要把这个函数传递给C++,这样就可以从C++中调用它了。我该如何在C++中使用boost.python来写这段代码呢?

4 个回答

2

我之前没用过,但参考手册里有一部分叫做 调用Python函数和方法,看起来是讲怎么做到这一点的。

4

我也不知道。不过你可以用 PyObject_Call() 这个方法来调用它,只要你手上有这个函数的对象就行。

15

如果它可能有任何名字:

把它传递给一个接受 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()

撰写回答