【发布时间】:2019-02-05 14:23:51
【问题描述】:
我们目前有一个旧的 c++ 库,出于兼容性原因,我们希望使用 ffi 从节点调用它。 lib 中的其中一个方法的定义如下:
int CalculateValue(std::vector<DataItem> dataItems, int mode)
DataItem 定义为:
struct DataItem
{
const void *Data;
int Size;
}
我尝试了一些带有 ref-Array 的变体(这显然不是正确的工具)
const InputDataStruct = StructType({
Data: ref.refType(ref.types.void),
Size: ref.types.int32
});
const InputVectorType = ArrayType(InputDataStruct);
const calculator = ffi.Library(libPath, {
'CalculateValue': [ref.types.int32, [InputVectorType, ref.types.int32]]
});
但我在调用此方法时不断遇到分段错误。我已将 node 和 c++ 上的签名更改为单个 DataItem 而不是向量,然后它可以完美运行。如何正确编组给定结构的向量?
【问题讨论】: