c++导出如下接口给js
如:
call_cpp(cmd:string,cb:(bool)=>void);
调用的时候 call_capp(“test”, (result)=>{console.log(result)});
在cpp中类似这样
bool call_cpp(se::State& state){
se::Value jsFunc; = state.args()[1];
// 这里有个线程,去干某些事,结束后再通过schedule来回调jsFunc
auto func = [jsFunc]()->void{
jsFunc.toObject()->call(xxx); // 这样是可以成功的。
};
但是假如我构建一个类,把jsFunc放到这个类里面,
auto func = [myclass)()->void{
myclass.jsFunc.toObject()->call(xxx);
};
这样就不行,myclass和jsfunc都还存在,但调用时提示Function object is released.
必须单独把myclass.jsFunc放到捕获列表里才行
return true;
}
我也试过root() 或者直接把 obj.toObject() 这个东西放到myclass里,面不是直接放se::Value 同样不行。
这个js里的方法在c++里生命周期到底是怎么样的?