从V8 :: Handle <object> </object> </object>创建V8 :: Persistent <object>的正确方法

时间:2013-08-20 10:24:33

标签: v8 embedded-v8

我刚将V8版本升级到3.20.16(来自一些非常旧的版本)。我不能再使用

Handle<Object> obj /* = ... */;
Persistent<Object> p = Persistent<Object>::New( obj );

创建对象的持久句柄。编译器建议使用static T* v8::Persistent<T>::New(v8::Isolate*, T*) [with T = v8::Object]代替。但是,如果我将代码更改为

Handle<Object> obj /* = ... */;
Persistent<Object> p = Persistent<Object>::New( Isolate::GetCurrent(), *obj );

编译器抱怨此函数是私有的。如何从正常Persistent<Object>创建Handle<Object>句柄?

我用谷歌搜索过,我发现的唯一一件事就是文件似乎相互矛盾:

感谢您提前提供任何帮助

1 个答案:

答案 0 :(得分:4)

有一个constructor接受普通Handle<T>,您无需取消引用它。

Persistent<Object>::New(Isolate::GetCurrent(), obj)

应该有用。