如何在 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}`);
  |