美文网首页
NAPI-底层调用

NAPI-底层调用

作者: 何亮hook_8285 | 来源:发表于2023-12-26 00:13 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:NAPI-底层调用

          本文链接:https://www.haomeiwen.com/subject/xuflndtx.html