首页 > 代码库 > c++写nodejs的扩展模块

c++写nodejs的扩展模块

c++写nodejs的扩展模块

by 伍雪颖


记住目录各文件的位置,主要是3个文件,hello.cc,binding.gyp,hello.js

hello.cc代码:
#include <node.h>
#include <v8.h>

using namespace v8;
Handle<Value> SayHello(const Arguments& args) {
	HandleScope scope;
	return scope.Close(String::New("Hello world!"));
}

void Init_Hello(Handle<Object> target) {
	target->Set(String::NewSymbol("SayHello"),FunctionTemplate::New(SayHello)->GetFunction());
}

NODE_MODULE(hello,Init_Hello)

binding.gyp代码:
{
	'targets':[
	{
	'target_name':'hello',
	'sources':['src/hello.cc'],
	}]
}

写好这两个文件后,编译生成模块文件:
1.要用到node-gyp工具
安装:npm install -g node-gyp
2.安装后编译:
node-gyp configure
node-gyp build
3.编译成功后,会在build/Release目录下出现一个hello.node文件

一般都会编译成功的,我原来binding.gyp文件内容是:
{
‘targets‘:[
{
‘target_name‘:‘hello‘,
‘sources‘:[‘src/hello.cc‘],
‘conditions‘:[[‘OS == "mac"‘,
{
‘libraries‘:[‘-lnode.lib‘]
}]]
}]
}
这样会报缺少-lnode.lib的错误,多此一举了,不要加就行!

接下来是调用它:
hello.js代码:
var hello = require('./build/Release/hello.node');
console.log(hello.SayHello());

执行:
node hello.js
成功输出hello world!

c++写nodejs的扩展模块