问题描述
- windows C++开发node.js addon问题?
-
- win7x64 vs2013RTM node.js-v0.12 gyp
- 问题:node官网上的例子可以跑,但看很多写成如下这样:
//官网上的例子 void Method(const FunctionCallbackInfo<Value>& args) { Isolate* isolate = Isolate::GetCurrent(); HandleScope scope(isolate); args.GetReturnValue().Set(String::NewFromUtf8(/isolateworld"");}
但是看到很多这样写的,这也是官网给出的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的源码就能想上面给出的那样写呢?
解决方案
自问自答:是因为版本的问题?我看了node.js-v0.10.23的源码,里面的addon例子.cc文件是这样写的
Handle<Value> Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New(""world""));}
时间: 2024-09-28 21:52:36