我正在使用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 *)。
我觉得我错过了一些东西,但我一辈子都看不到那会是什么。任何人都可以帮忙吗?