JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js调用C++开发的模块实例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何用C++和node交互,在Node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C++来处理,然后通过回调(callBACk的形式),返回给node。先回顾一下正统的用 C++ 开发 native 模块的方法

#include using namespace v8;

// 这里是 Hello 函数的 C++ 实现部分
Handle Method(const Arguments& args) {
HandleScope scope;
return scope.Close(String::New("world"));
}

// 这里是模块的初始化函数,必须有
void init(Handle exports) {
exports->Set(String::NewSymbol("Hello"),FunctionTemplate::New(Method)->GetFunction());
}

// 这里定义本模块的名字和初始化函数
NODE_MODULE(Hello,init)

这个模块用Node 写的话,@R_197_9811@:

s.Hello = function() { return 'world'; };

为了编译 C++ 这个模块,还需要一个 JSON 格式的 binding.gyp 文件,来定义编译的细节。
{
"targets": [
{
"target_name": "Hello","sources": [ "Hello.cpp" ]
}
]
}

执行 node-gyp configure build 就直接编译了。

require('./build/Release/Hello');

console.log(addon.Hello());

就输出结果。

如此node就可以直接调用C++编写的程序。

对上面程序的解释:在Hello.cc 中,我们首先创建了一个函数Method,此函数返回一个"Hello,world"的字符串,后面我们又创建了一个init的函数,作为一个初始化函数,我们去调用了一个函数

最后面,我们将这个模块绑定为:NODE_MODULE(Hello,init)

在官网中指出,所有的node的插件必须输出一个初始化的函数,也就是说如下代码是在每个模块都必须有的,固定格式。

exports); NODE_MODULE(module_name,InitializE)

其中 module_name 必须对应上binding.gyp中的 target_name 就可以了。

经过了node-gyp configure build 编译以后会在当前文件下生成一个build 的新的文件夹。我们通过在test.js中去引用这个build的结果,就可以调用C++的写的程序了。

大佬总结

以上是大佬教程为你收集整理的node.js调用C++开发的模块实例全部内容,希望文章能够帮你解决node.js调用C++开发的模块实例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。