码迷,mamicode.com
首页 > 编程语言 > 详细

V8系列之C++调用js函数

时间:2016-04-26 15:44:36      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:

下面写个程序,用来演示在C++中通过V8调用js函数

int js_load_data(char *buf) {
  //声明v8虚拟机
  Isolate* isolate;
//进入v8虚拟机内部,初始化v8运行环境
  Isolate::Scope isolate_scope(isolate);  
//创建句柄集合
  HandleScope handle_scope(isolate);
//创建v8运行上下文
Local<ObjectTemplate> global = ObjectTemplate::New(isolate);
  Local<Context> context = Context::New(isolate, NULL, global);
  Context::Scope context_scope(context);

  //获取js函数
  Local<String> func_name = String::NewFromUtf8(isolate, "load_data", NewStringType::kNormal).ToLocalChecked();
  Local<Value> func_value;
  if (!context->Global()->Get(context, func_name).ToLocal(&func_value) || !func_value->IsFunction()) {
    return -1;
  }
  //转换成js函数对象
  Local<Function> js_func = Local<Function>::Cast(func_value);
  //调用处理函数
  TryCatch try_catch(isolate);
  const int argc = 1;
  Local<Value> argv[argc] = {buf};
  Local<Value> result;
  if (!js_func->Call(context, context->Global(), argc, argv).ToLocal(&result)) {
    String::Utf8Value error(try_catch.Exception());
    printf("js_load_data error, : %s", *error);
    return -1;
  }
  return 0;
}

 

V8系列之C++调用js函数

标签:

原文地址:http://www.cnblogs.com/jice1990/p/5435115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!