Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Napi::Function::Call上的分段冲突_C++_Node.js_Segmentation Fault - Fatal编程技术网

C++ Napi::Function::Call上的分段冲突

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

我对C/C++甚至是NodeJS插件API都很陌生。我试图创建一个库来使用来自节点内的SDL2C++库,它大部分是工作的,除了事件发生的时候。接收节点JS应用程序每秒轮询事件60次。在C++中,当某类事件被引发时,我想调用回调函数。因此,在节点中,我将调用
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 });

}