gpt4 book ai didi

c++ - Node-Addon-Api 传递数组作为函数参数

转载 作者:搜寻专家 更新时间:2023-11-01 00:35:48 29 4
gpt4 key购买 nike

我正在尝试创建一个基本的 native Node 插件,其中从 Node 传递 javascript 数组,然后在 C++ 中进行处理。问题是我无法弄清楚如何正确传递数组。我可以毫无问题地实例化数组,但使用 info[0].as 分配它会引发错误。

我的c++代码是

#include <napi.h>

using namespace Napi;
using namespace std;

Value Add(const CallbackInfo& info)
{
Env env = info.Env();


Array result = Napi::Array::New(env);
Array a = info[0].As<Array>;

double arg1 = info[1].As<Number>().DoubleValue();
Number num = Napi::Number::New(env, 2 + arg1);

return num;
}

我得到的错误是

../cppsrc/main.cpp: In function ‘Napi::Value Add(const Napi::CallbackInfo&)’:
../cppsrc/main.cpp:12:21: error: conversion from ‘<unresolved overloaded function type>’ to non-scalar type ‘Napi::Array’ requested
Array a = info[0].As<Array>;
~~~~~~~~^~~~~~~~~

将数组传递给 C++ 的正确方法是什么?有可能吗?

最佳答案

这对我有用:

void runSetPropertyAsyncWorker(const CallbackInfo& info) 
{
std::string path = info[0].As<Napi::String>();
int property = info[1].As<Number>();
int dataSize = info[2].As<Number>();
Array b = info[3].As<Array>();
for(int i = 0; i<b.Length(); i++)
{
Napi::Value v = b[i];
if (v.IsNumber())
{
int value = (int)v.As<Napi::Number>();
...
...
}
}

...
...

Function callback = info[4].As<Function>();
AsyncWorker* asyncWorker = new SetPropertyAsyncWorker(callback, ...);
asyncWorker->Queue();
}

关于c++ - Node-Addon-Api 传递数组作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553524/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com