NAPI-底层调用
2023-12-26 本文已影响0人
何亮hook_8285
1.安装node-gpy
描述:gyp是nodejs编译c++源代码的工具,注意:使用gpy需要在电脑上安装python和VC++工具
#设置python环境
npm config set python "D:\www\Python38\python.exe"
#安装gyp前先确认node版本,目前测试node版本是14.0
npm install -g node-gyp@9.0.0
#如果电脑上依赖未安装,可以执行以下命令
npm install--global--production windows-build-tools
#查看gyp版本
node-gyp --version
#查看gyp环境信息
node-gyp configure --python "D:\www\Python38\python.exe"
#编译
node-gyp build
2.初始化nodejs项目
#创建工程目录
mkdir test1
#切换工程目录
cd test1
#初始化工程项目
npm init -y
#安装nodejs c++的依赖
npm i node-addon-api --save
3.创建cpp源文件
描述:创建hello.cc文件
#include <napi.h>
#include <stdio.h>
using namespace Napi;
String Hello(const CallbackInfo& info) {
return String::New(info.Env(), "Hello world");
}
Napi::Object Init(Env env, Object exports) {
exports.Set("hello", Function::New(env, Hello));
return exports;
}
NODE_API_MODULE(addon, Init)
4.创建编译描述文件
描述:创建binding.gyp文件
{
"targets": [
{
"target_name": "hello",
"sources": [
"hello.cc"
],
"include_dirs": [
"<!@(node -p \"require('node-addon-api').include\")"
],
"dependencies": [
"<!(node -p \"require('node-addon-api').gyp\")"
],
"cflags!": ["-fno-exceptions"],
"cflags_cc!": ["-fno-exceptions"],
"defines": ["NAPI_CPP_EXCEPTIONS"],
"xcode_settings": {
"GCC_ENABLE_CPP_EXCEPTIONS": "YES"
}
}
]
}
5.js调用C++动态库
描述:创建index.js文件
const hello = require('./build/Release/hello.node');
console.log(hello.hello());
6.初始化编译配置文件
node-gyp configure
7.编译动态库
node-gyp build
参考文档:
https://www.apiref.com/nodejs-zh/n-api.html
https://github.com/akab/electron-cpp
其他技术:
node-ffi