先安装node-gyp用于编译
npm install -g node-gyp // c++ header npm install -g node-addon-api
编写
main.cpp
和binding.gyp
main.cpp// main.cpp #include <assert.h> #include <node_api.h> #include <string> #define DECLARE_NAPI_METHOD(name, func) \ { name, 0, func, 0, 0, 0, napi_default, 0 } static napi_value getVersion(napi_env env, napi_callback_info info) { napi_status status; napi_value ret; std::string version = "version_test_nodejs"; status = napi_create_string_utf8(env, version.c_str(), version.length(), &ret); assert(status == napi_ok); return ret; }// getVersion // 初始化函数 static napi_value Init(napi_env env, napi_value exports) { napi_status status; napi_property_descriptor descs[] = { DECLARE_NAPI_METHOD("getVersion", getVersion) }; status = napi_define_properties(env, exports, sizeof(descs) / sizeof(descs[0]), descs); assert(status == napi_ok); return exports; } // 定义模块 NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)
binding.gyp
# binding.gyp { "targets":[ { "target_name":"native_module", "sources":[ "src/main.cpp", ], "libraries": [], "defines": [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ], "include_dirs": ['./src/third_party'] } ] }
编译
// 参数-C是切换目录的意思,此处binding.gyp在上一级目录中 node-gyp.cmd rebuild -C .. // 或者 node-gyp.cmd configure build -C ..
使用js文件导出使用
// native_module.js /*import { createRequire } from 'module'; const require = createRequire(import.meta.url); const xxxlib = require('xxxlib'); */ const nativeModule = require("../build/Release/native_module.node"); module.exports = nativeModule; module.exports.getVersion = nativeModule.getVersion;
使用导出函数:
import {getVersion} from "./native_module.js" console.log(getVersion());
最后修改:2023 年 12 月 29 日
© 允许规范转载