electron使用ffi调用动态链接库dll

##方法1:调用动态链接库dll(c++写的) electron桌面应用开发下调用:

###1.1 准备工作 编译软件:(编译c++/c的插件) - 安装npm install -g node-gyp 管理员身份运行:

如果本机已经装过vs2017,会失败,不建议这样。

1.- npm install --global windows-build-tools 

(其实我本机已经装过,之前测试跑过node-gyp编译c#的环境已经成功,所以只需要走第二部即可,安装node-gyp地址在博客中:https://blog.csdn.net/lbn2676043895/article/details/89881180)

2- 安装ffi ``` npm install --save ffi ``` 注意:此时ffi不能使用需重新编译 ``` - 重新下载ffi源码:https://github.com/node-ffi/node-ffi,然后把项目下./node-modules/ffi目录中的内容清空替换为我们刚下载的源码。 - 然后依次进入ffi和ref目录下,手动执行node-gyp命令进行编译: node-gyp rebuild --arch=ia32 --dist-url=https://atom.io/download/electron --runtime=electron --target=3.0.7 --arch参数代表要编译的系统平台,ia32代表32位,x64代表64位 --target参数代表当前使用的electron版本号 ``` ###1.2 使用ffi链接dll demo:一个demo,快速入门 ``` var ffi = require('ffi'); var libm = ffi.Library('libm', { 'ceil': [ 'double', [ 'double' ] ] }); libm.ceil(1.5); ``` 1. 路径不对:window.__devices = // "extraResources": { // "from": "src/renderer/", // "to": "", // "filter": ["**/*","!**/*.js","!**/*.vue","!**/*.png","!**/*.scss","!**/idcard/*"] // }, , { from: path.join(__dirname, '../src/renderer'), to: path.join(__dirname, '../dist/electron/'), ignore: ['**/*.js','**/*.vue','**/*.scss','**/*.png','**/idcard/*.*'] }

上述成功运行后有一个小坑,在打包后运行依旧会报错终止运行,所以这里需要在根目录下创建一个.npmrc的文件,在里面添加此代码


# Electron 的版本。
set npm config --target=1.2.3
# Electron 的系统架构, 值为 ia32 或者 x64。
set npm config --arch=x64
# 下载 Electron 的 headers。
eset npm config --disturl=https://npm.taobao.org/mirrors/atom/
# 告诉 node-pre-gyp 我们是在为 Electron 生成模块。
set npm config --runtime=electron
 

如此就可以成功打包并运行了

 

你可能感兴趣的:(electron使用ffi调用动态链接库dll)