美文网首页
使用VS2017开发node C++插件

使用VS2017开发node C++插件

作者: 星月西 | 来源:发表于2017-07-27 13:30 被阅读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

    相关文章

      网友评论

          本文标题:使用VS2017开发node C++插件

          本文链接:https://www.haomeiwen.com/subject/jadzkxtx.html