我正在使用node-ffi
以下签名实现回调:
const callback = ffi.Callback('void', ['int', 'void *'], (eMsg, pData) => {
console.log(pData);
console.log(`Buffer deref: ${ref.get(pData)}`);
});
底层 C 库void *
使用pData
. 大约一半的回调实际上返回一个int *
值,而另一半pData
是更复杂的数据(即Struct
)。最终ref.get(pData)
成为null
. 如果我将Callback
定义更改为使用int *
而不是void *
,ref.get(pData)
则返回正确的值。我无法弄清楚为什么void *
最终是一个大小为 0 的 Buffer不能正确取消引用(即使pData
是int *
)。
我觉得我错过了一些东西,但我一辈子都看不到那会是什么。任何人都可以帮忙吗?