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
上一篇下一篇

猜你喜欢

热点阅读