您的位置:首页 > Web前端 > Node.js

node.js C++ 扩展

2015-07-04 17:50 696 查看
<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,到此大功告成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: