node.js C++ 扩展

3 篇文章 0 订阅

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">node C++扩展在百度也能找到一部分资料,可能资料太早过时的原因,总是出错误</span>

多试了几次,终于通过,把过程记下一下吧,我用的操作系统是Windows7,linux没有过,估计又是另一种情况了吧


一、首先,塔建基础环境:

1. node.js V0.12.2 https://nodejs.org/download/

2.VS 2010

3.python 2.7

二、安装node-gyp

npm install node-gyp -g

安装成功后,在C:\Users\Administrator\.node-gyp\0.12.2 文件夹下按说应该包含需要的所有库文件和头文件,但是我的目录只有Release文件夹下的一个node.lib,既没有Debug,也没有头文件,所以根本没有办法进行下一步开发,我的解决办法是直接下载了node的源代码进行编译。


三、下载编译node源码

1.下载地址:https://nodejs.org/dist/v0.12.6/node-v0.12.6.tar.gz

2.解压

3.我进入vs2010 命令行提示(不知道是不是必须的,我为了防止不必要的意外)

4.进入node-v0.12.6文件夹

5.vcbuild.bat (我又用vcbuild.bat debug 生成debug版本)

至此,node编译完成,Debug和Release文件夹下有我们需要的node.lib文件,src文件夹和deps文件夹下有我们需要的头文件,我将这四个文件夹复制到了C:\Users\Administrator\.node-gyp\0.12.2目录



四、制作HelloWorld

1.创建文件 hello.cc

// hello.cc
#include <node.h>

using namespace v8;

void Method(const FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = Isolate::GetCurrent();
  HandleScope scope(isolate);
  args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}

void init(Handle<Object> exports) {
  NODE_SET_METHOD(exports, "hello", Method);
}

NODE_MODULE(addon, init)

2.创建文件binding.gyp

{
  "targets": [
    {
      "target_name": "addon",
      "sources": [ "hello.cc" ]
    }
  ]
}

3. node-gyp configure ,改命令可以生成Vs2010下的项目文件,我们打开文件可以看出其配置的node头文件和库文件的路径均在C:\Users\Administrator\.node-gyp\0.12.2目录,这就是我为什么刚才把生成的文件全部拷贝到这个文件夹里了。

   4.node-gyp build 成功生成addon.node(在build/Release/文件夹下)


下面就可以测试一下了:

node

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

addon.hello();

看到输出的world了吧,ok,到此大功告成

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值