国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

使用C++為node.js寫擴展模塊

2024-05-06 16:18:42
字體:
供稿:網(wǎng)友

本文給大家介紹的是在window7下使用C++來給node.js編寫擴展模塊的方法,附上一個簡單的hello實例,有需要的小伙伴可以參考下。

前提: 安裝好node.js、Python2.7與visual studio 2013。

過程:

首先安裝GYP項目生成工具,npm install -g node-gyp 。

建立test目錄,這是我們的工作目錄,在此目錄下再建一個src目錄,用來存放C++源代碼,另新建一個名為binding.gyp的文本文件,這是gyp的項目文件,內(nèi)容如下:

復(fù)制代碼代碼如下:

{

'targets':[{

'target_name':'hello',

'sources':['src/hello.cc']

}]

}

再寫一個簡單的hello.cc,內(nèi)容如下:

 

 
  1. #include <node.h> 
  2. using namespace v8; 
  3.  
  4. Handle<Value> Hello(const Arguments& args) { 
  5. HandleScope scope; 
  6. return scope.Close(String::New("Hello world!")); 
  7.  
  8. void init(Handle<Object> target) { 
  9. NODE_SET_METHOD(target, "hello", Hello); 
  10.  
  11. NODE_MODULE(hello, init) 

然后運行命令: node-gyp configure

如果正確運行的話,會出現(xiàn)一個目錄----build,其下為你生成了vs2013的項目文件,這樣就可以在vs2013中進行編輯與編譯了。

當(dāng)然也可以直接用命令 node-gyp build進行編譯。

測試js程序如下:

復(fù)制代碼代碼如下:

var hello = require('./hello');

console.log(hello.hello());

其中遇到了一些問題,記錄如下:

1、C:/Users/Administrator.node-gyp/0.10.33這個目錄下,沒有默認(rèn)Debug目錄,在vs2013中編譯成debug文件時會提示 error LNK1104: cannot open file 'C:/Users/Administrator.node-gyp/0.10.33/Debug/node.lib' ,建立一個Debug目錄,把與你操作系統(tǒng)環(huán)境相同的目錄下的node.lib拷貝到其中就好了。

2、NODE_MODULE(hello, init)中的hello是模塊名,需要與文件名保持一致,不然編譯沒問題,運行時會出錯。因為在require('./hello.node')時,既去找相應(yīng)的文件,也匹配對應(yīng)的MODULE。

3、我是對應(yīng)著樸靈的《深入淺出node.js》這本書,并參考一些網(wǎng)頁進行學(xué)習(xí)的,書給出的gyp項目文件中有一個conditions項,'libraries' : ['-lnode.lib'] ,因為這一句,編譯時一直報錯:can't open node.lib,明明文件是存在的,但就是報錯,找了很多資料,也沒解決,后來我把node.lib直接拷貝到工作目錄下,用命令行編譯成功了!但在vs2013中,錯誤還是依舊,我怎么想都不對,最后上官網(wǎng),發(fā)現(xiàn)人家的例子都沒有給出這種參數(shù),我就試著把這個東東刪除了,結(jié)果一切OK!大神們,誰能給出一個正確的解釋?!

以上所述上就是本文的全部內(nèi)容了,希望大家能夠喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 辉南县| 金塔县| 松滋市| 左贡县| 土默特右旗| 宜宾市| 茌平县| 江口县| 陇南市| 霍邱县| 香港 | 潼关县| 手机| 安国市| 苏尼特右旗| 霍林郭勒市| 镇坪县| 那曲县| 东安县| 桃江县| 开阳县| 原阳县| 平阳县| 廉江市| 甘孜县| 仪征市| 海淀区| 道真| 永丰县| 浦县| 类乌齐县| 无为县| 汾阳市| 乡城县| 淮滨县| 呼图壁县| 广安市| 海宁市| 昭苏县| 庆云县| 龙口市|