从C++调用Python函数

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)

  • 对于未来的观众:有人最终问了其他问题,我回答了.请看这里:stackoverflow.com/questions/8009613/boost-python-not-supporting-parallelism/8011153#8011153 (2认同)