使用C++為node.js寫擴(kuò)展模塊
前提: 安裝好node.js、Python2.7與visual studio 2013。
過程:
首先安裝GYP項(xiàng)目生成工具,npm install -g node-gyp 。
建立test目錄,這是我們的工作目錄,在此目錄下再建一個(gè)src目錄,用來存放C++源代碼,另新建一個(gè)名為binding.gyp的文本文件,這是gyp的項(xiàng)目文件,內(nèi)容如下:
{
'targets':[{
'target_name':'hello',
'sources':['src/hello.cc']
}]
}
再寫一個(gè)簡(jiǎn)單的hello.cc,內(nèi)容如下:
#include <node.h>
using namespace v8;
Handle<Value> Hello(const Arguments& args) {
HandleScope scope;
return scope.Close(String::New("Hello world!"));
}
void init(Handle<Object> target) {
NODE_SET_METHOD(target, "hello", Hello);
}
NODE_MODULE(hello, init)
然后運(yùn)行命令: node-gyp configure
如果正確運(yùn)行的話,會(huì)出現(xiàn)一個(gè)目錄----build,其下為你生成了vs2013的項(xiàng)目文件,這樣就可以在vs2013中進(jìn)行編輯與編譯了。
當(dāng)然也可以直接用命令 node-gyp build進(jìn)行編譯。
測(cè)試js程序如下:
var hello = require('./hello');
console.log(hello.hello());
其中遇到了一些問題,記錄如下:
1、C:\Users\Administrator.node-gyp\0.10.33這個(gè)目錄下,沒有默認(rèn)Debug目錄,在vs2013中編譯成debug文件時(shí)會(huì)提示 error LNK1104: cannot open file 'C:\Users\Administrator.node-gyp\0.10.33\Debug\node.lib' ,建立一個(gè)Debug目錄,把與你操作系統(tǒng)環(huán)境相同的目錄下的node.lib拷貝到其中就好了。
2、NODE_MODULE(hello, init)中的hello是模塊名,需要與文件名保持一致,不然編譯沒問題,運(yùn)行時(shí)會(huì)出錯(cuò)。因?yàn)樵趓equire('./hello.node')時(shí),既去找相應(yīng)的文件,也匹配對(duì)應(yīng)的MODULE。
3、我是對(duì)應(yīng)著樸靈的《深入淺出node.js》這本書,并參考一些網(wǎng)頁(yè)進(jìn)行學(xué)習(xí)的,書給出的gyp項(xiàng)目文件中有一個(gè)conditions項(xiàng),'libraries' : ['-lnode.lib'] ,因?yàn)檫@一句,編譯時(shí)一直報(bào)錯(cuò):can't open node.lib,明明文件是存在的,但就是報(bào)錯(cuò),找了很多資料,也沒解決,后來我把node.lib直接拷貝到工作目錄下,用命令行編譯成功了!但在vs2013中,錯(cuò)誤還是依舊,我怎么想都不對(duì),最后上官網(wǎng),發(fā)現(xiàn)人家的例子都沒有給出這種參數(shù),我就試著把這個(gè)東東刪除了,結(jié)果一切OK!大神們,誰(shuí)能給出一個(gè)正確的解釋?!
以上所述上就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
node.js中的querystring.stringify方法使用說明
這篇文章主要介紹了node.js中的querystring.stringify方法使用說明,本文介紹了querystring.stringify的方法說明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
對(duì)mac下nodejs 更新到最新版本的最新方法(推薦)
今天小編就為大家分享一篇對(duì)mac下nodejs 更新到最新版本的最新方法(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
詳解如何使用koa實(shí)現(xiàn)socket.io官網(wǎng)的例子
這篇文章主要介紹了詳解如何使用koa實(shí)現(xiàn)socket.io官網(wǎng)的例子,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
Nodejs中koa2連接mysql的實(shí)現(xiàn)示例
本文主要介紹了Nodejs中koa2連接mysql的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Node.js對(duì)MongoDB進(jìn)行增刪改查操作的實(shí)例代碼
這篇文章主要介紹了Node.js對(duì)MongoDB進(jìn)行增刪改查操作 ,需要的朋友可以參考下2019-04-04
Node.js與Sails ~項(xiàng)目結(jié)構(gòu)與Mvc實(shí)現(xiàn)及日志機(jī)制
Sails是一個(gè)Node.js的中間架構(gòu),很方便的幫助我們搭建web應(yīng)用程序。還有node.js與Sails日志機(jī)制在本文中也講到了,需要的朋友可以一起學(xué)習(xí)下2015-10-10
Node.js中DNS模塊學(xué)習(xí)總結(jié)
本篇文章給大家詳細(xì)介紹了Node.js中DNS模塊的相關(guān)知識(shí)點(diǎn),以及相關(guān)的實(shí)例代碼做了分享,有興趣的朋友參考下。2018-02-02
Node.js自動(dòng)生成API文檔的實(shí)現(xiàn)
本文主要介紹了Node.js自動(dòng)生成API文檔,包含基于swagger-jsdoc+swagger-ui-express快速實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
node 文件上傳接口的轉(zhuǎn)發(fā)的實(shí)現(xiàn)
這篇文章主要介紹了node 文件上傳接口的轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
詳解nodejs 開發(fā)企業(yè)微信第三方應(yīng)用入門教程
這篇文章主要介紹了詳解nodejs 開發(fā)企業(yè)微信第三方應(yīng)用入門教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03

