node-ffi、ref、ref-array、ref-struct安装

nodejs / elctron 中,可以通过 node-ffi ,通过 Foreign Function Interface 调用动态链接库,俗称调DLL,实现调用C/C++代码,从而实现许多node不好实现的功能,或复用诸多已实现的函数功能。

node-ffi

node-ffi是一个用于使用纯 JavaScript 加载和调用动态库的Node.js插件。它可以用来在不编写任何C ++代码的情况下创建与本地DLL库的绑定。同时它负责处理跨JavaScript和C的类型转换。
Node.js Addons 相比,此方法有如下优点:

与 Node.js Addons 相比,此方法有如下优点:

  1. 不需要源代码。
  2. 不需要每次重编译nodeNode.js Addons引用的.node会有文件锁,会对`electron应用热更新造成麻烦。
  3. 不要求开发者编写C代码,但是仍要求开发者具有一定C的知识。
    复制代码

缺点是:

  1. 性能有折损
  2. 类似其他语言的FFI调试,此方法近似黑盒调用,差错比较困难。
    复制代码

安装

node-ffi 通过 Buffer 类,在C代码和JS代码之间实现了内存共享,类型转换则是通过 ref、 ref-array 、 ref-struct 实现。由于 node-ffi / ref 包含C原生代码,所以安装需要配置Node原生插件编译环境。

npm install ffi
npm install ref
npm install ref-array
npm install ref-struct
解决办法

下面是可能出现的问题及解决办法

https://stackoverflow.com/questions/44316064/gyp-err-build-error-stack-error-make-failed-with-exit-code-2

https://stackoverflow.com/questions/32205721/npm-cannot-install-protractor-or-selenium-webdriver-gyp-err-build-error

我这里遇到的问题是

gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:269:23)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1074:12)
gyp ERR! System Linux 3.19.0-26-generic
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/node_modules/ws/node_modules/utf-8-validate
gyp ERR! node -v v0.12.4
gyp ERR! node-gyp -v v2.0.2
gyp ERR! not ok 
解决办法
$ npm cache clean
$ rm -rf node_modules
$ rm -rf ~/.node-gyp

删除当前用户目录下的.node-gyp文件夹及.npmrc文件

你可能感兴趣的:(node-ffi、ref、ref-array、ref-struct安装)