node.js 调用 C/C++扩展

270 阅读1分钟

node.js 调用 C/C++扩展

1.新建一个项目目录hello 2.在该目录下创建一个存放C/C++源代码的目录src 3.编写C/C++源代码hello.cc

// hello.cc
#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, "Hello World"));
}
 
void init(Local<Object> exports) {
  NODE_SET_METHOD(exports, "hello", Method);
}
 
NODE_MODULE(addon, init)
 
}  // namespace demo

4.在项目hello目录下,创建binding.gyp编译配置文件

{
  'targets': [
    {
      'target_name': 'hello',
      'sources': [
          'src/hello.cc'
      ],
      'conditions': [
          ['OS == "win"', 
          {
              'libraries': ['-lnode.lib']
          }
          ]
      ]
    }
  ]
}

5.在项目hello目录下,编写测试代码test.js

var addon = require('./build/Release/hello.node');
console.log(addon.hello());

6.使用node-gyp命令配置项目

node-gyp configure

7.使用node-gyp命令编译项目

node-gyp build

8.项目hello目录下,运行测试代码

node test.js

显示

Hello World

成功使用node.js调用C/C++代码