美文网首页
Electron笔记 4 使用 ffi 调用 DLL

Electron笔记 4 使用 ffi 调用 DLL

作者: 土DOU吹雪 | 来源:发表于2018-06-05 23:31 被阅读0次

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

相关文章

网友评论

      本文标题:Electron笔记 4 使用 ffi 调用 DLL

      本文链接:https://www.haomeiwen.com/subject/snlvsftx.html