4
這裏是一個node.js插件模塊,我用C++編寫並使用node-gyp構建。 當StoreFunction我想存儲的指針功能,這樣我就可以使用它以後如何存儲對函數的引用,以便稍後在node.js C++插件模塊中調用它?
當我稍後再嘗試調用它雖然InvokeFunction我得到一個分割故障。如果我在兩個函數中檢查指針(使用cout),我感到困惑,它們是相同的值。
所以我猜不是調用上下文之間的變化調用兩個函數或我不明白我指的是什麼。
所有(ummmmmm)指針感激地對我在這裏的問題接受..............
#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