Node-ffi
是一个 Nodejs
库,其中 FFI
是 Foreign Function Interface
的缩写。这个库的作用是方便程序员通过 Javascript
代码来调用 C/C++
动态链接库。想在 termux
中使用它必须自行编译。下面给出编译流程。
由于最新的 nodejs
中原生模块的接口为 NAPI
,因此请使用 node-ffi-napi
库。
编译步骤
1.下载项目到 Termux
1 2 3 4 5 6 7 8
| $ pkg install wget
$ wget -O ffi.zip https://github.com/node-ffi-napi/node-ffi-napi/archive/refs/tags/v4.0.3.zip
$ unzip ffi.zip
|
2.安装编译环境
1 2
| $ pkg install binutils python3
|
3.修改代码并编译
1
| $ cd node-ffi-napi-4.0.3
|
1 2 3 4 5
| 'sunos' 修改为 'android'
OS=="mac" 修改为 OS=="android"
|
1 2 3 4 5
| $ cp -r ./deps/libffi/config/linux ./deps/libffi/config/android
$ npm install
|
编译成功后会在项目目录下生成 build/Realease/ffi_bindings.node 文件
使用方法
1 2 3 4 5 6 7 8
| var ffi = require('./node-ffi-napi-4.0.3'); var libm = ffi.Library('libm', { 'ceil': ['double', ['double']] });
console.log(libm.ceil(1.5));
|
参考资料
Node.js使用ffi-napi调用动态库
Node.js 使用 FFI 调用 win32 API
Electron中使用Node-ffi模拟键鼠操作
从暴力到 NAN 再到 NAPI——Node.js 原生模块开发方式变迁