调用.dll文件与调用.exe稍有类似 ,类似的是可以在主进程里调用,但是同时也可以在渲染进程中进行调用。同时调用.dll我们则需要用到electron的一个库 electron-edge-js .才可以进行。
为了规范,我们还是统一在主进程 main.js 中进行.dll调用。
假如,现在我们有个.dll程序已经编写好了,我们这时候需要调用它怎么办。
一定是先从DOM(渲染进程)发送通知到主进程(main.js)中,由主进程接收到后,我们再进行.dll的文件调用。
鉴于上章我们说了从主进程接收通知来调用.exe,大家已经知道了渲染进程跟主进程的通信及接收。那我们这次就说如何在渲染进程中调用.dll吧
以上述为例,我们看下代码:
我们首先是需要安装 : electron-edge-js
然后引入到项目中:
这时候我们根据官方示例,使用edge.func 来生成一个调用方法啊。
上面代码中的 assemblyFile指的是你的 .dll 文件存放路径。(这里可能会存在路径找不到问题,需要绝对路径)
typeName的意思则是: 命名空间.对象名
methodName就很见名思意了:你这个对应.dll下的的方法名
这样的话我们就生成了一个调用.dll的执行方法。
下来我们就只需要调用即可。
invoke3 这个方法第一个为要传递给.dll的入参,因为我们没有,所以不用传递,第二个则为一个函数,它返回两个值,第一个值为调用错误。第二个则为调用后的返回参数。
我们根据情况进行判断即可。
至于上面我们说有可能路径会出现报错问题。
大家可以这样解决,如果是在渲染进程中,大家的存放 .dll 的文件尽可能地放在项目的根目录,这样不管是开发环境还是编译环境我们都可以直接通过 ./ceshi/ceshi.dll 文件进行找到它。
如果是在main.js 主进程调用的话,这时候大家就需要注意了。需要判断开发环境与生产环境,分别来进行获取.dll 路径。
如: