结构体中存在指针参数,通过结构体对象.参数名(指针参数名)获取参数时electron崩溃问题。ref-struct会把指针参数以Symbol类型写进ref.buffer中,所以取值就得换种思路来获取了(ES6-Symbol)。
https://es6.ruanyifeng.com/#docs/symbol

const ffi = require('ffi-napi');
const ref = require('ref-napi');
const ArrayType = require('ref-array-napi');
ParaStruct = Struct({ id: ref.types.int16, value: ref.refType("void*"), });
ParaStructArray = ArrayType(ref.refType(ParaStruct));
const dll = new ffi.Library('resources/DLL', {"STest":['int',[ParaStructArray]]});
var value= new Buffer(); for (var i = 0; i < 10; i++) { value.writeInt8(-1, i); }
let info = new ParaStruct ({ id:1, value:value, });
let array = [ParaStruct.ref()];
let num = dll.STest(array);
let buffer = array[0].deref();
for (let index in buffer) {
if (index == 'ref.buffer') {
let StructType = ParaStruct[index];
console.log(StructType);
const objectSymbols=Object.getOwnPropertySymbols(StructType);
console.log('test', StructType[objectSymbols[0]]);
}
}