Nodejs 使用 addons 调用c++ 初体验

Posted 不会非的猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs 使用 addons 调用c++ 初体验相关的知识,希望对你有一定的参考价值。

纠结很久,决定写一点遇到的“坑”。

基础环境:win7-64bit  node(v7.5.0)   这些安装实在是太方便了,自行准备吧。

1. 安装 python(2.7.x ),用npm安装 node-gyp(3.5.0),创建一个文件夹来存放 binding.gyp hello.cc test.js

 binding.gyp 内容如下:

1 {
2   "targets": [
3     {
4       "target_name": "hello",
5       "sources": [ "hello.cc" ]
6     }
7   ]
8 }
View Code

hello.cc  内容如下:

 1 #include <v8.h>
 2 #include <node.h>
 3 
 4 using namespace node;
 5 using namespace v8;
 6 
 7 void Method(const v8::FunctionCallbackInfo<v8::Value>& args) {
 8 v8::Isolate* isolate = args.GetIsolate();
 9 v8::HandleScope scope(isolate);
10 args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, "Hello world"));
11 }
12 
13 void init(v8::Local<v8::Object> target) {
14 NODE_SET_METHOD(target, "hello", Method);
15 }
16 
17 NODE_MODULE(binding, init);
View Code

test.js 内容如下:

var addon = require(\'./build/Release/hello\');
console.log(addon.hello());  
View Code

2. 直接执行 node-gyp configure build 

3.尝试运行一下吧

 

补充:

node-gyp configure 如果失败就多尝试几次,毕竟有些站点链接太慢

node-gyp build 失败的话,对比一下 hello.cc (格外注意,hello.cc 以后可能编译不通过,随时关注一下 v8 ,及时修改一下)

 

以上是关于Nodejs 使用 addons 调用c++ 初体验的主要内容,如果未能解决你的问题,请参考以下文章

使用 node.js 从 C++ 调用 JavaScript

在 NodeJS 中与 C++ 代码通信

nodejs的c ++插件中的预期类名

C++ 模板类绑定到 nodejs

从 Node.js 调用 C++ 库(Node addons / node-ffi)

Node.js C++ 插件学习指南