使用VS2017开发node C++插件
2017-07-27 本文已影响488人
星月西
1.简介
Node.js 插件是用 C++ 编写的动态链接共享对象,可以使用 require() 函数加载到 Node.js 中,且像普通的 Node.js 模块一样被使用。 它们主要用于为运行在 Node.js 中的 JavaScript 与 C/C++ 库之间提供接口。
2.准备工作
1.安装vs2017,需要安装VC++相关模块
2.安装python2.7,需要加入环境变量
3.在node官网下载最新的node源代码
3.配置开发环境
- 因为开发C++需要node相关的一些头文件,库文件,所以首先要用VS2017来编译node源代码
这里按照node官网的说明,进入下载好的node源代码目录中,执行:
vcbuild
等一段时间即可完成node源代码的编译,编译后的可执行文件和库文件在Release目录下,头文件在src目录下
-
用VS2017建立一个空的C++项目
-
在项目属性设置你的开发平台,如果下载的是64位版本node,则选择平台为x64;如果下载的是32位版本node,则选择平台为win32,并且设置目标文件扩展名为.node,配置类型为动态库(.dll)
-
打开VC++目录
-
设置包含目录为node头文件所在目录
-
设置库目录为node库文件所在目录
-
设置在链接器——输入——附加依赖项中添加库文件node.lib
-
设置调试——命令为使用cmd命令行,设置命令参数为/k ..\node\Release\node.exe index.js,这里需要根据编译好的node可执行文件的文件路径来进行设置,这里设置js启动文件为index.js
这样整个VS2017环境就配置好了
4.测试
可以为项目中添加一下两个文件
//main.cpp
#include <node.h>
namespace demo {
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::Object;
using v8::String;
using v8::Value;
void Method(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}
//初始化函数
void init(Local<Object> exports) {
//导出Method方法,重命名为hello
NODE_SET_METHOD(exports, "hello", Method);
}
//模块名为addon
NODE_MODULE(addon, init)
}
//index.js
var start = require('../x64/Debug/start');
console.log(start.hello());
接着执行即可看到命令行中出现执行结果,relaxing