Ama*_*mar 18 c++ python callback boost-python
我试图从C++实现调用Python函数.我认为它可以通过函数指针实现,但似乎不可能.我一直boost.python
用来完成这个.
假设在Python中定义了一个函数:
def callback(arg1, arg2):
#do something
return something
Run Code Online (Sandbox Code Playgroud)
现在我需要将此函数传递给C++,以便可以从那里调用它.如何在C++端编写代码boost.python
来实现这一目的?
Mat*_*ten 15
如果它可能有任何名称:
Pass it to a function that takes a boost::python::object
.
bp::object pycb; //global variable. could also store it in a map, etc
void register_callback(bp::object cb)
{
pycb = cb;
}
Run Code Online (Sandbox Code Playgroud)
If it is in a single known namespace with a consistent name:
bp::object pycb = bp::scope("namespace").attr("callback");
Run Code Online (Sandbox Code Playgroud)
bp::object
has operator()
defined, so you call it just like any function
ret = pycb()
Run Code Online (Sandbox Code Playgroud)