visualmemory 2015-03-25 02:25 采纳率: 0%
浏览 2428

windows C++开发node.js addon问题?

  1. win7x64, vs2013RTM, node.js-v0.12, gyp
  2. 问题: node官网上的例子可以跑,但看很多写成如下这样:
//官网上的例子
 void Method(const FunctionCallbackInfo<Value>& args) {
    Isolate* isolate = Isolate::GetCurrent();
    HandleScope scope(isolate);
    args.GetReturnValue().Set(String::NewFromUtf8(/isolate, "world");
}

但是看到很多这样写的,这也是官网给出的git链接上的代码

//node官网给出的git链接中的qt的源码
 Handle<Value> QPointFWrap::NewInstance(QPointF q) {
  HandleScope scope;

  Local<Object> instance = constructor->NewInstance(0, NULL);
  QPointFWrap* w = node::ObjectWrap::Unwrap<QPointFWrap>(instance);
  w->SetWrapped(q);

  return scope.Close(instance);
}

但是我自己写的时候,用Arguments就会报错。
在v8.h中,class Arguments是在namespace internal中
像这样:

 namespace v8{
 //...
 namespace internal{
     class Arguments;
 }
 //...
 }

还有,HandleScope scope; 这样写也不行。
v8.h中HandleScope里面没有默认构造函数,只能HandleScope scope(isolate);这样,也没有scope.Close(...)。
但是为什么qt的源码就能想上面给出的那样写呢?

  • 写回答

1条回答 默认 最新

  • visualmemory 2015-03-25 03:41
    关注

    自问自答:是因为版本的问题?我看了node.js-v0.10.23的源码,里面的addon例子.cc文件是这样写的

     Handle<Value> Method(const Arguments& args) {
      HandleScope scope;
      return scope.Close(String::New("world"));
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题