1.概述
利用 node-ffi 能够在 Electron 程序中调用 DLL。node-ffi 的 github 主页见参考资料【1】。
2.安装
通过下面命令安装 ffi。
npm install ffi
或在 package.json 文件的 "dependencies" 选项中 引入 ffi:
"dependencies": {
"ffi": "^2.2.0"
}
再通过
npm install
命令安装。
安装完成后,会在 node_modules 文件夹下产生两个文件夹 「ffi」以及「ref」。
分别进入文件夹,运行
node-gyp rebuild -target=2.0.0 -arch=x64 -dist-url=https://atom.io/download/atom-shell
其中: -target 是 Electron 版本号,-arch 是主机架构。
3.错误
使用过程中可能出现的错误:
错误1:
Dynamic Linking Error: Win32 error 126
没有找到需要调用的动态链接库,检查路径,注意 HTML 文件和 JS 文件中出现的相对路径,都是从 HTML 文件所在位置开始计算的。而 CSS 文件中出现的相对路径,是从 CSS 文件所在位置开始计算的(详见参考资料【2】)。
错误2:
Dynamic Linking Error: Win32 error 193
所调用的 DLL 和 Node 位数不一致,例如可能 DLL 是 32 位,而 Node 安装的为64位(详见参考资料【3】)。
4.使用
<script>
var ffi = require("ffi") //引入模块
var DLL = ffi.Library(
'FaceRecognition.dll'/*dll位置*/,{
'CAM_Open'/*函数名*/ : ['int'/*返回值*/, ['string','string']/*参数列表*/]
});
var result = DLL.CAM_Open("", ""); //调用函数
</script>
详见参考资料【4】。
值得一提的是,'.Net' 动态链接库在 Electron 中难以调用,应尽量避免调用。
【参考资料】
1.https://github.com/node-ffi/node-ffi
2.https://www.jianshu.com/p/f84bce255bb0
3.https://www.gmkgmk.com/2017/12/05/electron%E9%97%AE%E9%A2%98%E7%AC%94%E8%AE%B0(%E5%9B%9B)/
4.https://blog.csdn.net/chenhaifeng2016/article/details/75007006
网友评论