擅长:python、mysql、java
<p>感谢Tanner Sansbury在<a href="https://stackoverflow.com/a/15120692/1053968">this</a>帖子上链接了他的答案。这解决了我的问题,只是我不能调用接受参数的信号。在</p>
<p>我通过编辑py_slot类解决了这个问题:</p>
<pre><code>struct py_slot {
public:
/// @brief Constructor that assumes the caller has the GIL locked.
py_slot(const boost::python::object& object)
: object_(new boost::python::object(object), // GIL locked, so copy.
py_deleter<boost::python::object>()) // Delete needs GIL.
{}
void operator()(SomeParamClass param) {
// Lock the gil as the python object is going to be invoked.
gil_lock lock;
(*object_)(param);
private:
boost::shared_ptr<boost::python::object> object_;
};
</code></pre>
<p>boost::bind调用如下所示:</p>
^{pr2}$