我一般来说对C ++和v8还是很陌生,我想构建一个本机的node.js插件,但是现在我被困在一个非常简单的IMO上,但是我无法弄清楚问题出在哪里,错误消息
C:\Path\To\Project\File.cpp(50): error C2664: 'v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::Isolate *,v8::FunctionCallback,v8::Local<v8::Value>,v8::Local<v8::Signature>,int,v8::ConstructorBehavior,v8::SideEffectType)': cannot convert argument 2 from 'v8::Local<v8::Value> (__cdecl *)(const v8::FunctionCallbackInfo<v8::Value> &)' to 'v8::FunctionCallback' [C:\Path\To\Project\build\node_gui.vcxproj]
不是很有帮助。
我有以下代码,
v8::Local <v8::Object> Window::GetFunctions() {
v8::Local <v8::Object> DrawFunctions = v8::Object::New(isolate);
v8::Local <v8::FunctionTemplate> bgfnc = v8::FunctionTemplate::New(isolate, &Window::BackgroundCB);
DrawFunctions->Set(v8::String::NewFromUtf8(isolate, "background"), bgfnc);
return DrawFunctions;
}
void Window::Background(const v8::FunctionCallbackInfo <v8::Value> &args) {
v8::Isolate *isolate = args.GetIsolate();
renderer->Background(args[0]->NumberValue(), args[1]->NumberValue(), args[2]->NumberValue());
}
v8::Handle <v8::Value> BackgroundCB(const v8::FunctionCallbackInfo <v8::Value> &args) {
return ((Window*)v8::External::Cast(*(args.Data())->Value())->Background());
}
我想创建一个包含函数列表的对象,这些函数的回调将是Window
类的成员函数。我知道在here之前曾有人问过这个问题,该问题曾经使用非成员函数工作过,但在其他情况下则无效。
谢谢
Sidenote :对于适合初学者的v8文档,我已经走了很多路,nodesource并没有解释参数的含义,或者很少给出如何使用参数的详尽示例。函数/类,如果有人知道一些更好的文档,那就太好了,谢谢。