从C++调用Python函数
我想要在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()