<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,到此大功告成