用C++編寫擴(kuò)展node.js(node-ffi版)
用C++擴(kuò)展node.js(node-ffi版)
0.先安裝node.js和python(2.7)。請(qǐng)參考:
https://nodejs.org/
https://www.python.org
1.新建一個(gè)demo項(xiàng)目: 創(chuàng)建demo目錄,并進(jìn)入其中,然后運(yùn)行下面命令。
mkdir demo cd demo npm init
運(yùn)行npm init時(shí),之后會(huì)生成一個(gè)package.json(具體內(nèi)容與輸入?yún)?shù)有關(guān)):
{
"name": "demo",
"version": "1.0.0",
"description": "a demo for node call native functions",
"main": "demo.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"node"
],
"author": "Li XianJing",
"license": "ISC"
}
2.安裝編譯工具和頭文件。
sudo npm install -g node-gyp npm install ffi bindings --save
3.用C++編寫原生代碼( 為了讓目錄結(jié)構(gòu)整潔一點(diǎn),我們把代碼放到native只目錄下)。
下面的文件(native/demo.cc),添加一個(gè)Add方法,計(jì)算兩個(gè)數(shù)之和:
double Add(double a, double b) {
return a+b;
}
4.寫一個(gè)Makefile(native/Makefile), 用來編譯C++代碼。
all: $(CC) -g -shared demo.c -o libdemo.dylib clean: rm -frv libdemo*
5.編寫一個(gè)JS文件(demo.js)),讓它調(diào)用原生代碼。
var ffi = require('ffi');
var demo = ffi.Library('./native/libdemo', {
'Add': [ 'double', [ 'double', 'double'] ]
});
console.log(demo.Add(12345, 54321));
7.編譯C++程序。
make -C native
8.運(yùn)行JS代碼,看看是否工作。
node demo.js
參考:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
C++利用opencv實(shí)現(xiàn)單目測(cè)距的實(shí)現(xiàn)示例
本文主要介紹了C++利用opencv實(shí)現(xiàn)單目測(cè)距的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
C++實(shí)現(xiàn)折半插入排序(BinaryInsertSort)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)折半插入排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04

