Electron-vite使用koffi,调用dll方法传参

Koffi中文文档

1. koffi方法加载:

例如:

dll 方法为 int add(int num1,int num2)

koffi 加载方法有2种【经典语法、类 C 的原型】,可参考 koffi文档中的函数调用

经典语法:const add = lib.func('add', 'int', ['int', 'int']); // 格式为:方法名、返回值类型、[参数类型]

类c:const add = lib.func('int add(int num1,int num2)'); //格式为:直接将c语言方法,填入即可

通过上述方法的定义,js中就能直接调用。

2.参数传递:

1.基础参数:

定义类型直接传递,例如:

数字型:

int a = 1;
int b = 1;
const ret = add(a,b);//koffi.func('int add(int a,int b)');

字符型

const a = 'hello world';
const ret = printf(a);// koffi.func('int printf(char a)');

2.c语言指针

js中可以使用数组,或者buffer(推荐)

//方法1
const a = ['\0'.repeat(128)];//使用数组,并且使用repeat来填充位数,定义缓冲区大小
const ret = printf(a);//lib.func('int printf(char* a)');//假设a在c程序中有其他赋值操作
console.log(a[0]); //打印结果

//方法2
const b = Buffer.alloc(128,0,'utf8');//使用buffer,填充0,128位大小
const ret = printf(b);//lib.func('int printf(char* b)');//假设a在c程序中有其他赋值操作
console.log(b); //打印buffer结果,可以使用b.toString(encoding, start, end) 进行输出

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值