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) 进行输出