C++ Napi::Function::Call上的分段冲突
我对C/C++甚至是NodeJS插件API都很陌生。我试图创建一个库来使用来自节点内的SDL2C++库,它大部分是工作的,除了事件发生的时候。接收节点JS应用程序每秒轮询事件60次。在C++中,当某类事件被引发时,我想调用回调函数。因此,在节点中,我将调用C++ Napi::Function::Call上的分段冲突,c++,node.js,segmentation-fault,C++,Node.js,Segmentation Fault,我对C/C++甚至是NodeJS插件API都很陌生。我试图创建一个库来使用来自节点内的SDL2C++库,它大部分是工作的,除了事件发生的时候。接收节点JS应用程序每秒轮询事件60次。在C++中,当某类事件被引发时,我想调用回调函数。因此,在节点中,我将调用setEventHandler(Event.Type,data=>…)函数,该函数将回调函数绑定到事件类型。我是这样做的: // ./src/main.h namespace node_sdl2 { SDL::SDL_Event e
setEventHandler(Event.Type,data=>…)
函数,该函数将回调函数绑定到事件类型。我是这样做的:
// ./src/main.h
namespace node_sdl2 {
SDL::SDL_Event event;
...
Napi::Function mouseDown;
Napi::Function mouseUp;
void setListener(const Napi::CallbackInfo &info);
...
}
// ./src/main.cpp
void node_sdl2::setListener(const Napi::CallbackInfo &info) {
Napi::Env env = info.Env();
// Check the provided event type (info[0]) is the mouseMove event
node_sdl2::mouseMove = info[1].As<Napi::Function>()
}
这最后一行很麻烦。我知道分段冲突暗示了悬空指针,但唯一真正来自的地方是对回调的引用。老实说,我不确定如何确认回调确实存在,但我知道我正在设置处理程序,然后再从节点程序中使用它。有没有办法解决这个问题,因为我已经在这里待了几天,但我自己没有足够的经验来解决这个问题
谢谢
// ./src/main.cpp
void node_sdl2::pollEvent(const Napi::CallbackInfo &info) {
SDL::SDL_PollEvent(&node_sdl2::event);
// again check for event type and if its the mouseMove event, call the respective handler.
node_sdl2::mouseMove.Call({ ... args });
}