首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在node-addon-api中从c++返回float32数组?

如何在node-addon-api中从c++返回float32数组?
EN

Stack Overflow用户
提问于 2021-05-19 19:12:07
回答 1查看 265关注 0票数 2

我正在尝试使用node-addon-api在node.js中运行c++。我从medium上读到了一篇写得很好的精致文章。但是我想将一个浮点数传递给我的一个函数,并将一个浮动数组传递给另一个函数。我想从这两个函数返回一个浮点数组。函数示例(greeting.cpp)

代码语言:javascript
复制
#include <iostream>
#include <string>
#include <cmath>
#include "greeting.h"

float* helloUser( float name ) {
  float* result = new float[3];
  result[0] = 1;
  result[1] = 2;
  result[2] = name;
  return result;
}

以及带有模块原生实现的index.cpp的代码:

代码语言:javascript
复制
#include <napi.h>
#include <string>
#include "greeting.h"

Napi::Float32Array greetHello(const Napi::CallbackInfo& info) {
    Napi::Env env = info.Env();

    float user = (float) info[0].ToNumber();
    float* result = helloUser( user );

    return Napi::Float32Array::New(env, result);
}

Napi::Object Init(Napi::Env env, Napi::Object exports) {

    exports.Set(
        Napi::String::New(env, "greetHello"), // property name => "greetHello"
        Napi::Function::New(env, greetHello) // property value => `greetHello` function
    );

    return exports;
}

NODE_API_MODULE(greet, Init)

问题是,Napi::Float32Array不起作用,我试过Napi::TypedArrayOf<float>,它也不起作用。我对编写模块不是很感兴趣。我只想让在节点中运行的纯c++代码将其结果发送到前端。我尝试用Napi::Number接受和返回浮点数,它工作得很好。但是我不知道如何让它开始与数组一起工作。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 09:30:46

我遇到了类似的问题,Napi instance methods希望:

代码语言:javascript
复制
void MethodName(const Napi::CallbackInfo& info);

代码语言:javascript
复制
Napi::Value MethodName(const Napi::CallbackInfo& info);

尽管Napi::TypedArray继承了从Napi::Value继承的Napi::Object,但您必须显式返回一个Napi::Value,如下所示:

代码语言:javascript
复制
Napi::Value greetHello(Napi::CallbackInfo const& info)
{
  Napi::Float32Array arr = Napi::Float32Array::New(info.Env(), 16);
  arr[0] = 1;
  arr[15] = 16;
  return arr;
}

这会让你得到一个Float32Array

代码语言:javascript
复制
{
  greetHello: [Function (anonymous)]
}
Float32Array(16) [
  1, 0, 0,  0, 0, 0,
  0, 0, 0,  0, 0, 0,
  0, 0, 0, 16
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67602113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档