这是一个node.js插件模块,我用C++编写,使用node-gyp构建.当StoreFunction我试图存储一个指向函数的指针,以便我以后可以使用它
当我稍后尝试在InvokeFunction中调用它时,我得到一个Segmentation错误.如果我检查两个函数中的指针(使用cout)它们是相同的值,那令我困惑的是什么.
所以我猜测调用两个函数之间调用上下文的变化或者我不明白我指向的是什么.
所有(ummmmmm)指针在这里感谢我的问题..............
Run Code Online (Sandbox Code Playgroud)#include <node.h> #include <v8.h> using namespace v8; v8::Persistent<v8::Function> callbackFunction; Handle<Value> StoreFunction(const Arguments& args) { HandleScope scope; callbackFunction = *Local<Function>::Cast(args[0]); return scope.Close(Undefined()); } Handle<Value> InvokeFunction(const Arguments& args) { HandleScope scope; Local<Value> argv[1] = { String::New("Callback from InvokeFunction")}; callbackFunction->Call(Context::GetCurrent()->Global(), 1, argv); return scope.Close(Undefined()); } void init(Handle<Object> target) { NODE_SET_METHOD(target, "StoreFunction", StoreFunction); NODE_SET_METHOD(target, "InvokeFunction", InvokeFunction); } NODE_MODULE(someaddonmodule, init);
当然还有一些叫js ...........
var myaddon = require('../build/Release/someaddonmodule');
myaddon.StoreFunction(function(data){
console.log("Called back: "+data);
});
myaddon.InvokeFunction(); //causes a segmentation fault
Run Code Online (Sandbox Code Playgroud)