visual studio开发nodejs的c++ addon

目前博客中讲到开发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_第1张图片

配置系统环境变量

visual studio开发nodejs的c++ addon_第2张图片

visual studio项目中添加nodejs c++ addon项目
VS识别include文件中的头文件

新建一个visual studio的visual c++的console项目,新建src和include目录。通过配置src中的cpp可以自动识别到include目录中的头文件。
visual studio开发nodejs的c++ addon_第3张图片
点击如下图中的按钮或者通过项目的properties也可以
visual studio开发nodejs的c++ addon_第4张图片
自动引入include中的文件,编写include头文件就可以编译器就可以自动识别到。
visual studio开发nodejs的c++ addon_第5张图片

配置编译成项目的类型

配置类型选择成dll动态连接库类型
visual studio开发nodejs的c++ addon_第6张图片
目标文件的扩展名改为编译成 .node,在nodejs的c++模块中 .node 其实就是一个动态动态链接库,跟windows中的dll,Linux中so文件一样。
visual studio开发nodejs的c++ addon_第7张图片
配置Linker中的其他依赖加上 node.lib
visual studio开发nodejs的c++ addon_第8张图片
添加nodejs的c++开发环境依赖,Include Directories和Library Directories目录添加对应的依赖库。
visual studio开发nodejs的c++ addon_第9张图片
分别引入已经编译完成nodejs源码包相应的目录,我的nodejs目录下载在 C:\workspace\github\node-14.4.0 目录下;当然你也可以安装在别的位置。如下图 Include Directories 所需要添加的路径。
visual studio开发nodejs的c++ addon_第10张图片
Library Directories 添加的库依赖
visual studio开发nodejs的c++ addon_第11张图片
查看IDE的编辑环境,如下图没有标记红线的代码出现,很清爽。
visual studio开发nodejs的c++ addon_第12张图片
那么需要再对代码进行build,出现========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========表示编译成功。
visual studio开发nodejs的c++ addon_第13张图片

js验证调用生成的c++ addon

首先要保证两个条件

  1. nodejs源码依据x86还是x64的CPU架构编译出来的;visual stuio开发c++ addon时也选择对应的CPU架构
    vcbuild.bat debug nosign x86 这里的x86要与visual studio中的x86一致,否则编译不通过
    visual studio开发nodejs的c++ addon_第14张图片

  2. 为了排除干扰,使用js调用编译完成的c++ addon时,需要临时更换nodejs运行环境,如下我已经把nodejs运行环境换成了源码编译出的nodejs。
    visual studio开发nodejs的c++ addon_第15张图片
    完成这些就可以直接在js中调用addon了,成功打印出来了
    visual studio开发nodejs的c++ addon_第16张图片

你可能感兴趣的:(nodejs,编译器,visual,studio,nodejs,nodejs插件,nodejs的c++插件,c++)