nodejs编写c++插件

nodejs编写c++插件

先有node环境 我创建的是N-API的插件这个可以跨多个的node版本

  • npm init创建插件目录
  • 安装 node-gyp
  • 创建 binding.gyp
1
2
3
4
5
6
7
8
{
"targets": [
{
"target_name": "hello",
"sources": [ "hello.cc" ]
}
]
}
  • 创建hello.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <node_api.h>
#include <assert.h>

napi_value Method(napi_env env, napi_callback_info info) {
napi_status status;
napi_value world;
status = napi_create_string_utf8(env, "world", 5, &world);
assert(status == napi_ok);
return world;
}

#define DECLARE_NAPI_METHOD(name, func) \
{ name, 0, func, 0, 0, 0, napi_default, 0 }

napi_value Init(napi_env env, napi_value exports) {
napi_status status;
napi_property_descriptor desc = DECLARE_NAPI_METHOD("hello", Method);
status = napi_define_properties(env, exports, 1, &desc);
assert(status == napi_ok);
return exports;
}

NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)
  • node-gyp configure 创建项目vs的项目文件
  • node-gyp buid 编译项目 如果一切正常没有问题的话 会在build的Release多一个hello.node文件
  • 这个插件可以通过nodejs的js文件包含使用了 运行下面这段代码会出现world的输出
1
2
let t = require("./build/Release/hello.node");
console.log(t.hello());
  • 这样一个简单的c++的node插件就完成了