nodejs写一个接口传参_为Node.js编写C/C++模块之【参数传递和返回】

本文详细介绍了如何在Node.js中与C/C++模块进行数据交互,包括传递和返回Primitive类型(String/Boolean/Number)、函数类型和JS对象。通过示例代码展示了如何实现不同类型的参数传递,并提供了测试验证。
摘要由CSDN通过智能技术生成

作者:小黑

上篇文章中介绍了nodejs与C/C++模块的结合,那么怎么来和模块之间收发数据,这是本文即将介绍的内容。如果你打算学习使用v8引擎,那么你应该详细的看看。如果你想看看本文到底说了些啥,那么,请直接看总结部分。

一、开发前准备

然后选一个文件夹,给今天的分享建立一个工程目录,我这里取名为/addon_3_11

并在工程目录中新建立一个binding.gyp文件,内容暂时为空吧,之后有用。

方便测试,在根目录中新建一个test.js用来测试我们的接口,内容为空就行。

二、传递&返回Primitive类型[String/Boolean/Number]

在工程中,新建一个文件lz_primitive.cc,内容如下:

// file : lz_primitive.cc

#include "node.h"

#include "v8.h"

using v8::Isolate;

using v8::FunctionCallbackInfo;

using v8::Value;

using v8::Local;

using v8::String;

using v8::Object;

using v8::Number;

using v8::Boolean;

void method(const FunctionCallbackInfo &args){

//

Isolate * isolate = args.GetIsolate();

if (args[0]->IsNumber()){

double a = args[0]->NumberValue();

Local return_val =Number::New(isolate,a+1);

args.GetReturnValue().Set(return_val);

};

if (args[0]->IsBoolean()){

bool a = args[0]->BooleanValue();

Local return_val =Boolean::New(isolate,!a);

args.GetReturnValue().Set(return_val);

};

if (args[0]->IsString()){

Local add_str = String::NewFromUtf8(isolate,"lizhiqianduan");

add_str = String::Concat(args[0]->ToString(),add_str);

args.GetReturnValue().Set(add_str);

};

}

void init(Local exports) {

NODE_SET_METHOD(exports, "method", method);

}

NODE_MODULE(addon, init)

上面我们定义了一个add方法,接收两个数字,并返回一个数字。

接下来,在我们的编译文件binding.gyp中添加如下内容:

# file binding.gyp

{

"targets":[

{

# 指定C++模块的名字,这里为lz_primitive.node

'target_name': 'l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值