1. 程式人生 > >如何在VS2015中搭建可以寫node.js的C++ Addon的環境

如何在VS2015中搭建可以寫node.js的C++ Addon的環境

如何在VS2015中搭建可以寫node.js的C++Addon的環境

    由於專案需要,編寫一些提供給node.js呼叫的C++實現的外掛,所以在vs中搭建開發node addon 的環境。因為視訊全是英文,當中有些細節提,所以寫個文件分享下心得

一. 準備工作:

1.  安裝好vs2015,這沒什麼說的,安裝就好,最後開啟時選 VC++(vs2015預設是C#)

二.正式安裝配置環境

1.  安裝好python,記得在環境變數中,找到Path後面加上Python的路徑

2.  vcbuild Release x64 指令在cmd執行,編譯生成64位的node.exe 和64位的node.lib庫

注意:這裡nodejs.exe和lib,include標頭檔案都是用得v7.8,x86的

5.  建立空的工程,並進行如下配置。

這裡要說明一下,如果你的專案需要32位的lib,那你Debug x64時候會出問題,所以一定要做到 node.exe,node.lib,以及專案目標型別和專案所需要的都一致,都是x86或者x64.

注意:如果用得下載的原始碼,再vcbuild Release x64 編譯生成的是x64的exe,同時生成的node.lib也是64位,所以建立工程,生成的目標也得是x64。 而我的專案,需要agora的一個lib庫,它是32位的,所以我重新官網下載安裝32位的v7.8的exe(步驟1.4),再步驟2.1,2.3,2.4。

三.建立工程並配置引數執行示例工程

建立一個空的工程,並進行如下步驟設定:

 


這裡是設定標頭檔案路徑,編譯的就是…\node-master\src,下載的是…\include\node(node.h,v8.h.uv.h這些標頭檔案的路徑)

 

這就是 …\node-master\Release 或者下載的node.lib放置的路徑

 


編譯可能出現的問題及解決:

編譯時提示“fatal error C1010: 在查詢預編譯頭指令時遇到意外的檔案結尾”

分析:
此錯誤發生的原因是VC編譯器在尋找預編譯標頭檔案(預設#include“stdafx.h”)時,檔案未預期結束。也就是沒有找到預設的預編譯標頭檔案”stdafx.h”。而VC中建立每一個cpp預設都會加上”stdafx.h”,但新增的第三方類庫(比如tinyxml)的cpp檔案並沒有 #include “stdafx.h”預編譯指示頭,所以編譯器就無法找到預編譯指示標頭檔案。

解決:

方法有好幾種,最直接的辦法就是開啟專案屬性對話方塊 “配置屬性-> c/c++-> 預編譯頭->“建立/使用預編譯頭”的值改為 “使用預編譯頭(/Yu)” 改為 “不適用預編譯頭“,雖然這麼做可以一勞永逸,後面新增的第三方庫檔案都不會再遇到這個問題,但是會帶來整個編譯變得很慢,所以不推薦這麼做。

比較好的方式是右鍵開啟第三庫中的cpp檔案的屬性對話方塊,修改”配置屬性-> c/c++ -> 預編譯頭->“建立/使用預編譯頭” 的值改為 “使用預編譯頭(/Yu)” 改為 “不適用預編譯頭“

重新編譯專案就可以了。


fatal error LNK1112: module machine type'x64' conflicts with target machine type 'X86'


還有其他錯誤:如誤刪除了#pragma once 出現標頭檔案二次編譯的錯誤,還有其他的,比如沒包含需要的.lib或者dll檔案等錯誤。

四. 按照以上設定專案,並加上官方demo,工程可以正常編譯成功。

如上配置,可以在cmd中啟動node.exe並且啟動js指令碼。


指令碼的程式碼類似於:var addon =require("D:/project/Project1/Debug/Project1.node"),這裡寫上官方給的demo就可以。