如何编写 nodejs ffi napi 库函数来调用 .dll 中的双数组?

问题描述

谁能帮忙在 nodejs-ffi-napi 中编写这段代码

void __cdecl waveform(double Amplitude,double SamplingRateSS,int32_t CodeOrder,double PRIS,double DutyCycle,double IData[],double QData[],int32_t len,int32_t len2);

这里的 double IData[]double QData[] 是双数据类型的输出数组。而int32_t lenint32_t len2分别是IData[]和QData[]的长度

I have tried this gist 并阅读了此文档ffi-napi

以下代码我尝试过但失败了

const ffi = require('ffi-napi');
const ref = require('ref-napi');
const ArrayType = require('ref-array-napi');

var doubleArray = ArrayType(ref.types.double);

let libm = ffi.Library('SharedLib.dll',{
    'waveform': ['void',['double','double','int',doubleArray,'int']]
});

var outIdata = doubleArray([])
var outQdata = doubleArray([])

libm.waveform(1,10000,10,0.001,50,outIdata,outQdata,10)


    console.log(outIdata);
    console.log(outQdata);

我得到这个输出

ArrayType { buffer: <Buffer@0x00000000 >,[Symbol(length)]: 0 }
ArrayType { buffer: <Buffer@0x00000000 >,[Symbol(length)]: 0 }

我的预期是

[-1.2323,12332,1789........]
[-1.6723,18332,1089........]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)