如何在 Mac OS 下用 node 调用 C
如何调用 C 代码
如何在 Mac os 编译 C 文件
使用 node-ffi 可以让 Node.js 调用 C++ 的 Library 。在 Windows 下是 dll
,在 Mac OS 下是 dylib
,Linux 则是 so
。node-ffi 加载 Library 是有限制的,只能处理 C 风格的 Library 。也就是函数要被放在 extern "C"
里。
如何在 Mac OSX 中制作 dylib 和使用 dylib
1.首先是构建一个函数库
编辑 add.c
1
2
3
4
5
6
7
| int add(int a,int b) {
return a+b;
}
int axb(int a,int b) {
return a*b;
}
|
2.编译函数库得到 libadd.dylib
1
2
3
4
5
6
7
| gcc -c add.c -o add.o
//下面是linux系统时
ar rcs libadd.a add.o
//下面是Mac OSX
gcc add.o -dynamiclib -current_version 1.0 -o libadd.dylib
|
node-ffi 调用 C 编译的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| var ref = require('ref');
var ffi = require('ffi');
var intPtr = ref.refType(ref.types.int); // 创建一个 int 指针类型
var lib = ffi.Library('libadd', {
add: ['int', ['int', 'int']],
axb: ['int', ['int', 'int']],
});
let sum = lib.add(1, 2);
console.log(`1 + 2 = ${sum}`);
let res = lib.axb(3, 3);
console.log(`3 * 3 = ${res}`);
|