萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> 在window7下使用C++來給node.js編寫擴展模塊的方法

在window7下使用C++來給node.js編寫擴展模塊的方法

   在window7下使用C++來給node.js編寫擴展模塊的方法

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

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

  過程:

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

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

   代碼如下:

  {

  'targets':[{

  'target_name':'hello',

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

  }]

  }

  再寫一個簡單的hello.cc,內容如下:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 #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)

  然後運行命令: node-gyp configure

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

  當然也可以直接用命令 node-gyp build進行編譯。

  測試js程序如下:

  代碼如下:

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

  console.log(hello.hello());

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

  1、C:UsersAdministrator.node-gyp.10.33這個目錄下,沒有默認Debug目錄,在vs2013中編譯成debug文件時會提示 error LNK1104: cannot open file 'C:UsersAdministrator.node-gyp.10.33Debugnode.lib' ,建立一個Debug目錄,把與你操作系統環境相同的目錄下的node.lib拷貝到其中就好了。

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

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

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

copyright © 萬盛學電腦網 all rights reserved