1

我正在编写一个自定义 Node.js 插件。除了使用回调之外,一切都很好。我在 DLL 中有一个需要注册 C++ 函数回调的方法——它接受一个函数,然后在接收到新数据时调用它,这很简单。我想做的是在我的 .cc 文件中,传递一个本地方法,当该方法被触发时,调用 JavaScript 回调。自己调用 JavaScript 回调,并保存回调并稍后调用它可以正常工作。

在我的 addon.cc 中,我有一个除了调用保存的回调之外什么都不做的方法:

 static int __stdcall ReadCallback(RESULT* pResult){
 const unsigned argc = 1;
 v8::Local<v8::Value> argv[argc] =  { Nan::New("bah").ToLocalChecked() };
 Nan::MakeCallback(Nan::GetCurrentContext()->Global(), callback, argc, argv);
   return 0;
}

我有一个可调用的公开节点方法:

void RunCallback(const Nan::FunctionCallbackInfo<v8::Value>& info) {
   PipsLibrary::Functions::RegisterReadCallback(ReadCallback);
   v8::Local<v8::Function> cb = info[0].As<v8::Function>();
   callback = cb;
}

我调用外部 C++ .DLL 的所有其他节点方法都可以工作,它只是将此函数作为 .cc 的参数传递,运行时会引发错误,“未捕获错误:找不到指定的过程。”

不确定问题是什么,或者我是否可以在 .cc 文件中指定一个方法作为回调传递给 C++。

4

0 回答 0