目前博客中講到開發nodejs c++ addon均是一筆帶過與nodejs官方文檔無異;急需要一篇能夠與現代編譯器結合的方式開發c++ addon。本文使用visual studio開發nodejs c++插件,不需要使用node-gyp(這玩意好像已經停止更新了,還要求你用python 2.7), 通過配置visual studio使得開發nodejs c++插件像IDEA寫Java那樣有着智能的提示,人性化的開發環境!
下載nodejs源碼進行編譯
https://github.com/nodejs/node/releases 下載一個stable版的nodejs源碼包到指定系統位置,然後解壓,加壓後如下圖(部分內容)。
在解壓的位置進行編譯執行 vcbuild.bat debug nosign x86
(時間有點長,根據電腦配置有關)
配置系統環境變量
visual studio項目中添加nodejs c++ addon項目
VS識別include文件中的頭文件
新建一個visual studio的visual c++的console項目,新建src和include目錄。通過配置src中的cpp可以自動識別到include目錄中的頭文件。
點擊如下圖中的按鈕或者通過項目的properties也可以
自動引入include中的文件,編寫include頭文件就可以編譯器就可以自動識別到。
配置編譯成項目的類型
配置類型選擇成dll動態連接庫類型
目標文件的擴展名改爲編譯成 .node,在nodejs的c++模塊中 .node 其實就是一個動態動態鏈接庫,跟windows中的dll,Linux中so文件一樣。
配置Linker中的其他依賴加上 node.lib
添加nodejs的c++開發環境依賴,Include Directories和Library Directories目錄添加對應的依賴庫。
分別引入已經編譯完成nodejs源碼包相應的目錄,我的nodejs目錄下載在 C:\workspace\github\node-14.4.0
目錄下;當然你也可以安裝在別的位置。如下圖 Include Directories 所需要添加的路徑。
Library Directories 添加的庫依賴
查看IDE的編輯環境,如下圖沒有標記紅線的代碼出現,很清爽。
那麼需要再對代碼進行build,出現========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
表示編譯成功。
js驗證調用生成的c++ addon
首先要保證兩個條件
-
nodejs源碼依據x86還是x64的CPU架構編譯出來的;visual stuio開發c++ addon時也選擇對應的CPU架構
vcbuild.bat debug nosign x86
這裏的x86要與visual studio中的x86一致,否則編譯不通過
-
爲了排除干擾,使用js調用編譯完成的c++ addon時,需要臨時更換nodejs運行環境,如下我已經把nodejs運行環境換成了源碼編譯出的nodejs。
完成這些就可以直接在js中調用addon了,成功打印出來了