测试环境

vs:vs2017
node.js:9.9.6

相关地址

官方文档对应地址:https://www.nodejs.org/api/addons.html
官方案例对应地址:https://www.github.com/nodejs/node-addon-examples

安装所需版本的Node.js

下载并且安装Node.js,在官网下载安装包即可。如果不想用最新版本,可以在https://www.nodejs.org/dist/下载别的版本。

安装Python2.7

安装Python2.7后,打开CMD,运行npm config set python python2.7。

安装gyp

以管理员模式打开CMD,运行npm install -g node-gyp,即可安装。 关于gyp可以参考https://github.com/nodejs/node-gyp#installation,里面有相关的安装需求说明。

编写代码以及配置文件

这个请参考官方文档。我这里直接以官方案例的HelloWorld为例。

打开CMD,切换目录至代码目录

1_hello_world 下有好几个文件夹,我选择了node_0.12,也就是说要切换到这个文件夹下。其中binding.gyp文件为配置文件。hello.cc是我们写插件代码的地方。hello.js用于测试。

运行node-gyp configure,如果配置文件没错的话,就会出现一个目录build,里面是VS的工程文件,你就可以使用VS进行编译了,当然也可以运行node-gyp build来编译

修改JS文件以及测试

将编译完的hello.node复制到代码所在目录(node_0.12)。

编辑hello.js文件,将
var addon = require('bindings')('hello');
改成
var addon = require('./hello.node');

这里的测试代码是远古版本的代码,所以需要修改。

之后开始测试,打开CMD,切换到hello.js所在目录,运行node hello.js,如果没有出问题,cmd就会输出world字符。

注意

NODE_MODULE(hello, init)中的hello是模块名,需要与文件名保持一致,不然编译没问题,运行时会出错。因为在require('./hello.node')时,既去找相应的文件,也匹配对应的MODULE。

Node.js c++ 扩展之HelloWorld的更多相关文章

  1. 编写Node.js原生扩展

    Node.js是一个强大的平台,理想状态下一切都都可以用javascript写成.然而,你可能还会用到许多遗留的库和系统,这样的话使用c++编写Node.JS扩展会是一个不错的注意. 以下所有例子的源 ...

  2. Node.js(1)-helloworld

    1.Node.Js 环境准备 下载地址: node.js http://nodejs.org/download/   vs.net集成开发环境: Node.js Tools for Visual St ...

  3. Node.js实战(二)之HelloWorld示例

    经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每 ...

  4. node.js开发学习一HelloWorld

    前言:由于公司业务需求,最近启动了node.js的开发任务,想把自己的开发学习历程记录记录下来,可以增加记忆,也方便查找.虽然对javascript有一定的了解,但是刚接触node.js的时候,发现还 ...

  5. Node.js 极简入门Helloworld版服务器例子

    粗浅得很,纯属备忘. // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http"); ...

  6. (译+注解)node.js的C++扩展入门

    声明:本文主要翻译自node.js addons官方文档.部分解释为作者自己添加. 编程环境: 1. 操作系统 Mac OS X 10.9.51. node.js v4.4.22. npm v3.9. ...

  7. Node.js Addons翻译(C/C++扩展)

    PS:请先升级Node 6.2.1,Node 升级命令 npm install -g n;n stable.NOde.js扩展是一个通过C/C++编写的动态链接库,并通过Node.js的函数requi ...

  8. Node.js快速入门

    Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架. 它的最新版本是:v0.12.7(在编写本教程时的版本).Node.js在官方 ...

  9. hi-nginx-javascript vs node.js

    hi-nginx-1.4.9已经支持javascript,这意味着把javascript应用于后端开发,将不再只有nodejs这唯一的途径和方法.由于java本身对javascript的极好支持,使得 ...

随机推荐

  1. ubuntu:基本操作;

    1.系统时间与网络时间同步: sudo dpkg-reconfigure tzdata 注: 该博文为扩展型:

  2. 1.1浅谈Spring(一个叫春的框架)

    如今各种Spring框架甚嚣尘上,但是终归还是属于spring的东西.所以在这里,个人谈一谈对spring的认识,笔者觉得掌握spring原理以及spring所涉及到的设计模式对我们具有极大的帮助.我 ...

  3. [Android] Android 锁屏实现与总结 (二)

    上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...

  4. Moving Average

    移动平均算法Demo #!/usr/bin/python2.7 # Fetch data from BD and analyse. import json import urllib import t ...

  5. Java8从对象列表中取出某个属性的列表

    List<属性值类型> 属性List = 对象List.stream().map(对象::get方法()).collect(Collectors.toList()); 例如: List&l ...

  6. APPLE-SA-2019-3-25-4 Safari 12.1

    APPLE-SA-2019-3-25-4 Safari 12.1 Safari 12.1 is now available and addresses the following: Safari Re ...

  7. 异常捕获try----catch

    如果try语句里有return,返回的是try语句块中变量值. 详细执行过程如下: 如果有返回值,就把返回值保存到局部变量中: 执行jsr指令跳到finally语句里执行: 执行完finally语句后 ...

  8. 你对安卓触控一体机了解多少?视野还停留在windows一体机上?

    android一体机可以根据用户的不同需求拓展各种不同的硬件外接设备和各种应用软件,环境适应能力又强,所以在诸多领域的应用都非常受欢迎,并且还在不断地开拓新市场.安卓系统触摸一体机占据绝对性优势. 1 ...

  9. 有序不可变列表tuple

    tuple(元组)也是一种有序列表 但是与list不同的是,他是不可变的.一旦初始化就不可以被更改 声明方法 tuple名=(元素1,元素2,元素3--) >>> name=('To ...

  10. C#控件数组批量生成控件

    在编写C#窗体应用程序的时候,有时候需要生成好多个功能相似的同一种控件(比如数字键盘按键.单选框等),这时候使用窗体编辑器,费时费力,不便于修改.因此可以采用批量生成控件的形式. 以批量生成按钮为例 ...