首页 > 代码库 > 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)
{ '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‘]
}]]
}]
}
‘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的扩展模块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。