C ++ / NodeJS Включая другие файлы N-API - PullRequest
0 голосов
/ 04 июля 2019

Я хочу включить другой исходный файл / заголовочный файл в мой проект N-API. Когда я делаю это, он прекрасно компилируется и связывается, но при выполнении жалуется на то, что функция из другого файла не найдена.

test.h

int addExt(int a, int b);

test.c

#include "test.h"

int addExt(int a, int b)
{
    return a+b;
}

main.h

#include <napi.h>
#include "test.h"

Napi::Number Add(const Napi::CallbackInfo& info);
Napi::Object Init(Napi::Env env, Napi::Object exports);

main.cpp

#include "main.h"

Napi::Number Add(const Napi::CallbackInfo& info)
{
    Napi::Env env = info.Env();
    if (info.Length() < 2 || !info[0].IsNumber() || !info[1].IsNumber()) {
        Napi::TypeError::New(env, "Number expected").ThrowAsJavaScriptException();
    }

    Napi::Number first = info[0].As<Napi::Number>();
    Napi::Number second = info[1].As<Napi::Number>();

    int returnValue = addExt(first.Int32Value(), second.Int32Value());
    return Napi::Number::New(env, returnValue);
}

Napi::Object Init(Napi::Env env, Napi::Object exports)
{
    exports.Set("add", Napi::Function::New(env, Add));

    return exports;
}

NODE_API_MODULE(jsInvMpu6050, Init)

binding.gyp

{
    "targets": [{
        "target_name": "js-inv-mpu6050",
        "cflags!": [ "-fno-exceptions" ],
        "cflags_cc!": [ "-fno-exceptions" ],
        "sources": [
            "src/main.cpp",
            "src/test.c"
        ],
        'include_dirs': [
            "<!@(node -p \"require('node-addon-api').include\")"
        ],
        'libraries': [],
        'dependencies': [
            "<!(node -p \"require('node-addon-api').gyp\")"
        ],
        'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ]
    }]
}

При запуске в стандартном C ++ все работает нормально. В каталоге сборки я вижу, что main.o и test.o создаются правильно. Однако при запуске я получаю сообщение об ошибке: undefined symbol: _Z6addExtii

...