node.js调用C++开发的模块实例_node.js
程序员文章站
2022-05-16 22:38:47
...
如何用C++和node交互,在node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C++来处理,然后通过回调(callback的形式),返回给node。先回顾一下正统的用 C++ 开发 native 模块的方法
#include#include using namespace v8; // 这里是 hello 函数的 C++ 实现部分 Handle Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New("world")); } // 这里是模块的初始化函数,必须有 void init(Handle
这个模块用Node 写的话,是这样的:
exports.hello = function() { return 'world'; }; 为了编译 C++ 这个模块,还需要一个 JSON 格式的 binding.gyp 文件,来定义编译的细节。 { "targets": [ { "target_name": "hello", "sources": [ "hello.cpp" ] } ] }
执行 node-gyp configure build 就直接编译了。
node test.js: var addon = require('./build/Release/hello'); console.log(addon.hello());
就输出结果。
如此node就可以直接调用C++编写的程序。
对上面程序的解释:在hello.cc 中,我们首先创建了一个函数Method, 此函数返回一个"hello,world"的字符串,后面我们又创建了一个init的函数,作为一个初始化函数,我们去调用了一个函数
最后面,我们将这个模块绑定为:NODE_MODULE(hello, init)
在官网中指出,所有的node的插件必须输出一个初始化的函数,也就是说如下代码是在每个模块都必须有的,固定格式。
void Initialize (Handle
其中 module_name 必须对应上binding.gyp中的 target_name 就可以了。
经过了node-gyp configure build 编译以后会在当前文件下生成一个build 的新的文件夹。我们通过在test.js中去引用这个build的结果,就可以调用C++的写的程序了。
推荐阅读
-
如何利用node.js进行webapp的开发实例教程
-
基于node.js的fs核心模块读写文件操作(实例讲解)
-
Node.js 使用request模块下载文件的实例
-
详解node.js的http模块实例演示
-
Node02-Node.js模块化开发,系统模块,第三方模块,package.json文件,Node.js中模块的加载机制
-
node.js当中模块化开发的基本流程及require加载文件的规则
-
Node02-Node.js模块化开发,系统模块,第三方模块,package.json文件,Node.js中模块的加载机制
-
node.js中path路径模块的使用方法实例分析
-
node.js中module模块的功能理解与用法实例分析
-
node.js中fs文件系统模块的使用方法实例详解