Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

How to write the nodejs C++ plug-in

Shulou Source: shulou.com Published: 2022-06-01 20:48:16 10月21日 Update

This article mainly introduces "how to write nodejs C++ plug-ins". In daily operation, I believe many people have doubts about how to write nodejs C++ plug-ins. The editor consulted all kinds of materials and sorted out simple and easy-to-use methods of operation. I hope it will be helpful to answer the questions of "how to write nodejs C++ plug-ins". Next, please follow the editor to study!

Environment

1 ubuntu18.04 .

2 install nodejs v12 and npm install node-gyp-g.

Write code

Write an example of a test. Test.cc

/ / hello.cc using N-API

# include

Namespace demo {

Napi_value Method (napi_env env, napi_callback_info args) {

Napi_value greeting

Napi_status status

Status = napi_create_string_utf8 (env, "world", NAPI_AUTO_LENGTH, & greeting)

If (status! = napi_ok) return nullptr

Return greeting

}

Napi_value init (napi_env env, napi_value exports) {

Napi_status status

Napi_value fn

Status = napi_create_function (env, nullptr, 0, Method, nullptr, & fn)

If (status! = napi_ok) return nullptr

Status = napi_set_named_property (env, exports, "hello", fn)

If (status! = napi_ok) return nullptr

Return exports

}

NAPI_MODULE (NODE_GYP_MODULE_NAME, init)

} / / namespace demo

Binding.gyp

{

"targets": [

{

"target_name": "test"

"sources": [". / test.cc"]

}

]

}

Then execute npm init. The contents are as follows

{

"name": "test-addons"

"version": "1.0.1"

"description":

Main: ". / build/Release/test.node"

"scripts": {

"test": "echo\" Error: no test specified\ "& exit 1"

"install": "node-gyp rebuild"

}

"author":

"license": "ISC"

"gypfile": true

}

We mainly look at two configurations related to plug-ins.

Main: ". / build/Release/test.node"

"gypfile": true

Main defines the entry of the plug-in because we do not provide users with the api of js. Instead, the .node file is provided directly, so the path defined here is the path of the plug-in. Gypfile tag this package is a C++ plug-in, when the user installs the package using npm, it executes node-gyp rebuild and generates the corresponding binaries for the user's system environment. Some articles describe the need to add "install" to the value of scripts: "node-gyp rebuild". The npm documentation says that this rebuild operation will be performed by default if there is a .gyp file under the package.

"scripts": {"install": "node-gyp rebuild"}

If there is a binding.gyp file in the root of your package and you have not defined an install or preinstall script, npm will default the install command to compile using node-gyp.

When everything is ready, we can execute the npm publish release (remember to log in to npm first).

test

Let's install this package first. Npm install test-addons-- unsafe-perm, and then write code to test it.

Var addon = require ("test-addons/build/Release/test")

Console.log (addon.hello ())

We found that this was obviously troublesome. So we'd better provide users with the interface of the js module in the package. We add index.js to the bag.

Var addon = require (". / build/Release/test")

Module.exports = addon

Modify the test code

Var addon = require ("test-addons")

Console.log (addon.hello ()); at this point, the study on "how to write nodejs C++ plug-ins" is over. I hope I can solve your doubts. The collocation of theory and practice can better help you learn, go and try it! If you want to continue to learn more related knowledge, please continue to follow the website, the editor will continue to work hard to bring you more practical articles!

Tags: Plug-ins caches code users learning tests files articles more environment paths help utility next two binary examples portals content interfaces Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno MySQL vpn macOS NVidia Xiaomi