2024-09-24 08:31:49 发布
网友
boost.python
假设Python中定义了一个函数:
def callback(arg1, arg2): #do something return something
现在我需要把这个函数传递给C++,这样就可以从那里调用它。如何使用^ {CD1}}在C++侧编写代码来实现这个目标?
一点线索也没有。但一旦拥有了function对象,就可以使用^{}来调用它。
如果它可能有名字:
将其传递给接受boost::python::object的函数。
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(),所以您可以像调用任何函数一样调用它
bp::object
operator()
ret = pycb()
我以前没有使用过它,但是参考手册中有一个名为Calling Python Functions and Methods的部分,它似乎展示了如何做到这一点。
一点线索也没有。但一旦拥有了function对象,就可以使用^{} 来调用它。
如果它可能有名字:
将其传递给接受
boost::python::object
的函数。如果它位于具有一致名称的单个已知命名空间中:
bp::object
已经定义了operator()
,所以您可以像调用任何函数一样调用它我以前没有使用过它,但是参考手册中有一个名为Calling Python Functions and Methods的部分,它似乎展示了如何做到这一点。
相关问题 更多 >
编程相关推荐