Я хочу включить другой исходный файл / заголовочный файл в мой проект 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