关于node调用dll的一些分享

  "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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值