"dependencies": {
"ffi-napi": "^4.0.3",
"ref-array-di": "^1.2.2",
"ref-array-napi": "^1.2.2",
"ref-struct-di": "^1.1.1"
}
项目基本必须依赖以上内容,我用的node是18版本的,系统win11,64位
至于安装ffi-napi是很不好弄的, 请参考别人的文章
下面重点说一下用法
1:引用dll,并写入相关的参数,其中 ref.refType("void") 代表指针, 凡是要传地址的地方全部填写这个
const ffi = require("ffi-napi");
const ref = require("ref-napi");
const Struct = require('ref-struct-di')(ref);
const ArrayType = require('ref-array-di')(ref);
2,对简单的参数比如整形这些一般直接写参数就行,例如
3、对于需要传入结构体指针的,就比较复杂了,比如C里面的
这种在js里面怎么构建呢?
需要像下面这样写
传入时应该这样
3:还有一种比较复杂的情况, 比如C里面有个函数,需要传入一个结构体数组的指针, 这个比较棘手,因为找不到参考资料吃了很多亏, 在人工智能的帮助下, 经过反复摸索现在将方法分享出来
比如 VCI_BOARD_INFO_OBJ 需要创建100个,那么应该这么做
const StructArray = ArrayType(VCI_BOARD_INFO_OBJ );
const infoList = new StructArray(100);
具体传递参数时使用 infoList.buffer , 访问对象时可以像访问普通数组那样去访问比如
let hw = infoList[5].hw_Version