Как мне создать оболочку для v8 :: Persistent к функции C ++ - PullRequest
0 голосов
/ 30 января 2020

У меня есть v8::Persistent<v8::Function>, который мне нужно превратить в void(__cdecl*) функцию. Мне предложили использовать обертку, но я не уверен, как это сделать.

1 Ответ

0 голосов
/ 30 января 2020

Например, вот так:

v8::Persistent<v8::Function> func = ...;
v8::Persistent<v8::Context> context = ...;
v8::Isolate* isolate = ...;

void cpp_func(...) {
  v8::Local<v8::Context> ctx = v8::Local<v8::Context>::New(isolate, context);
  // The "this" inside the JavaScript function:
  v8::Local<v8::Object> arg_this = ctx->Global();
  // Arguments to the JavaScript function, of type `v8::Local<v8::Value>[]`.
  int argc = 0;
  int argv = nullptr;
  func->Call(ctx, arg_this, argc, argv);
}

В V8 есть еще много примеров test-api. cc.

...