亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

node.js調(diào)用C++開發(fā)的模塊實例

 更新時間:2015年07月03日 11:52:46   投稿:junjie  
這篇文章主要介紹了node.js調(diào)用C++開發(fā)的模塊實例,在node的程序中,如果有大數(shù)據(jù)量的計算,處理起來比較慢,可以用C++來處理,然后通過回調(diào)(callback的形式),返回給node,需要的朋友可以參考下

如何用C++和node交互,在node的程序中,如果有大數(shù)據(jù)量的計算,處理起來比較慢,可以用C++來處理,然后通過回調(diào)(callback的形式),返回給node。先回顧一下正統(tǒng)的用 C++ 開發(fā) native 模塊的方法

#include <node.h> 
#include <v8.h> 
using namespace v8; 
 
// 這里是 hello 函數(shù)的 C++ 實現(xiàn)部分 
Handle<Value> Method(const Arguments& args) { 
 HandleScope scope; 
 return scope.Close(String::New("world")); 
} 
 
// 這里是模塊的初始化函數(shù),必須有 
void init(Handle<Object> exports) { 
 exports->Set(String::NewSymbol("hello"), 
   FunctionTemplate::New(Method)->GetFunction()); 
} 
 
// 這里定義本模塊的名字和初始化函數(shù) 
NODE_MODULE(hello, init)

這個模塊用Node 寫的話,是這樣的:

exports.hello = function() { 
 return 'world'; 
};


為了編譯 C++ 這個模塊,還需要一個 JSON 格式的 binding.gyp 文件,來定義編譯的細節(jié)。 
{ 
 "targets": [ 
  { 
   "target_name": "hello", 
   "sources": [ "hello.cpp" ] 
  } 
 ] 
}

執(zhí)行 node-gyp configure build  就直接編譯了。

node test.js: 
var addon = require('./build/Release/hello'); 

console.log(addon.hello()); 

 就輸出結(jié)果。

如此node就可以直接調(diào)用C++編寫的程序。

對上面程序的解釋:在hello.cc 中,我們首先創(chuàng)建了一個函數(shù)Method, 此函數(shù)返回一個"hello,world"的字符串,后面我們又創(chuàng)建了一個init的函數(shù),作為一個初始化函數(shù),我們?nèi)フ{(diào)用了一個函數(shù)

最后面,我們將這個模塊綁定為:NODE_MODULE(hello, init)

在官網(wǎng)中指出,所有的node的插件必須輸出一個初始化的函數(shù),也就是說如下代碼是在每個模塊都必須有的,固定格式。

void Initialize (Handle<Object> exports); 
NODE_MODULE(module_name, Initialize) 

其中 module_name 必須對應(yīng)上binding.gyp中的 target_name 就可以了。

經(jīng)過了node-gyp configure build 編譯以后會在當前文件下生成一個build 的新的文件夾。我們通過在test.js中去引用這個build的結(jié)果,就可以調(diào)用C++的寫的程序了。

相關(guān)文章

  • mac下徹底卸載node和npm方法步驟

    mac下徹底卸載node和npm方法步驟

    我們經(jīng)常在卸載軟件的時候會遇到有殘留,這樣就很難去重新下載,本篇文章就來介紹mac下徹底卸載node和npm及重新安裝的方法,有需要的朋友可以借鑒參考下
    2021-09-09
  • 如何在Linux上安裝Node.js

    如何在Linux上安裝Node.js

    這篇文章主要為大家分享了如何在你的Linux發(fā)行版上安裝Node.js?感興趣的小伙伴們可以參考一下
    2016-04-04
  • Node.js與Sails ~項目結(jié)構(gòu)與Mvc實現(xiàn)及日志機制

    Node.js與Sails ~項目結(jié)構(gòu)與Mvc實現(xiàn)及日志機制

    Sails是一個Node.js的中間架構(gòu),很方便的幫助我們搭建web應(yīng)用程序。還有node.js與Sails日志機制在本文中也講到了,需要的朋友可以一起學習下
    2015-10-10
  • node.js中的fs.lchownSync方法使用說明

    node.js中的fs.lchownSync方法使用說明

    這篇文章主要介紹了node.js中的fs.lchownSync方法使用說明,本文介紹了fs.lchownSync的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node實現(xiàn)mock-plugin中間件的方法

    node實現(xiàn)mock-plugin中間件的方法

    這篇文章主要介紹了node實現(xiàn)mock-plugin中間件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Node.js中npx命令的使用方法及場景分析

    Node.js中npx命令的使用方法及場景分析

    NPM(Node Package Manager) 是Node.js提供的一個包管理器, 可以使用 NPM 來安裝 node.js 包 ,npm 是從5.2版開始, 增加(自帶)了 npx 命令,本文給大家分享Node.js npx命令使用,需要的朋友一起看看吧
    2021-08-08
  • 淺談node.js中間件有哪些類型

    淺談node.js中間件有哪些類型

    這篇文章主要介紹了node.js中間件有哪些類型,對中間件感興趣的同學,可以參考下
    2021-04-04
  • node.js中stream流中可讀流和可寫流的實現(xiàn)與使用方法實例分析

    node.js中stream流中可讀流和可寫流的實現(xiàn)與使用方法實例分析

    這篇文章主要介紹了node.js中stream流中可讀流和可寫流的實現(xiàn)與使用方法,結(jié)合實例形式分析了node.js stream流可讀流和可寫流基本分類、原理、定義、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2020-02-02
  • Mac下通過brew安裝指定版本的nodejs教程

    Mac下通過brew安裝指定版本的nodejs教程

    今天小編就為大家分享一篇Mac下通過brew安裝指定版本的nodejs教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • pnpm管理依賴包如何節(jié)省磁盤空間詳解

    pnpm管理依賴包如何節(jié)省磁盤空間詳解

    這篇文章主要為大家介紹了pnpm管理依賴包如何節(jié)省磁盤空間詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論