Electron应用打包后在某些电脑上ffi/ffi-napi 报 Dynamic Linking Error:Win32 error 126 错误

文章目录

  • Electron应用打包后在某些电脑上ffi/ffi-napi 报 Dynamic Linking Error:Win32 error 126 错误
    • 解决方案
    • 2022年10月21日 更新

开发的 Electron 程序在大多数电脑上都是正常使用,但是同样的安装包最近在国外客户的电脑上频频出现白屏问题。通过远程调试后发现,在国外客户的电脑上,ffi / ffi-napi 一直报 Dynamic Linking Error:Win32 error 126 的错误。

这个错误的原因在网上普遍说的是因为引用的 dll 路径问题,根据传递的路径找不到相应的文件,但是通过调试,发现引用 dll 的路径是没有问题的,百思不得其解。

在解决一个客户问题时,通过升级Electron版本,搞系统预设环境,稀里糊涂的就给搞好,具体原因当时不太清楚,以为是升级了Electron版本就可以了,然而没过两周,又有客户用新包也不行,没办法,只能重复搞系统预设环境。

上个预设环境是在 Node 官网下载 Node,不小心下了源码,编译 Node 期间搞好的,这次想的是先找到缺少的环境,实在走不通了再重新编译 Node ,虽然编译时代码在屏幕上刷刷刷的上滚很酷炫,但是总不能每次都远程给客户搞吧,要累死了。

通过Google了解,可能是引用的 dll 中引用了依赖 dll,所以找不到相关文件,找了 dll 的开发小姐姐,要来了相关依赖环境重新打包,结果还是没用,通过 C++ 的一个依赖文件检测工具发现使用的dll的依赖包在电脑上并不缺失,好吧,打算继续编译 Node 了。

百般无聊中,发现了相关搜索内容中,有一篇博客写了相关内容,其中有个步骤是安装 C++ 的构建工具,死马当活马医吧,执行了博客中的命令,然后,好了。。。

解决方案

  1. 安装 Node.js
  2. 通过管理员权限,打开 CMD 或 PowerShell
  3. 执行 npm install --global --production windows-build-tools

这不是一个很好的解决方案,问题核心应该是国外电脑的 C++ 构建工具中缺失,导致电脑的某些环境未安装,用此方法需要先安装 Node.js ,然后再执行相关命令,对于非专业人员,太过复杂。但是如果直接安装 C++ 构建工具,好像需要安装 VS,两者相比取其轻,暂时先用 Node 吧,能做的也就让用户手动安装 Node ,再提供个脚本一键执行后续所有操作吧。

国内用户在通过 npm 安装这个的时候,可能会因为网络问题安装不成功,不过国内用户很少出现因为这个问题导致的白屏问题。后面继续优化吧。

鸣谢:

关于在electron中调用C++动态库的经验总结

2022年10月21日 更新

上述解决问题的方案有歧义,已通过其他方式彻底解决该问题

  1. electron 打包时,需要将使用的 dll 文件移动到指定目录下,build 配置字段为 extraResources、extraFiles;具体配置去看官方文档
  2. 在使用 dll 时,获取绝对路径,根据开发环境和生产环境,获得不同的路径。通过在 process.env.PATH 环境变量上追加 dll 的绝对路径的文件目录(不包含dll名称),进行下一步。
  3. 引用 dll 时只使用 dll 名称,不通过路径引入。let dll = ffi.Library(“dllName”,{…})
  4. 获取 dll 后将环境变量的值进行恢复。

ffi Error:Dynamic Linking Error:Win32 error 126相关推荐

  1. js调用c++实现的dll, Error: Dynamic Linking Error: Win32 error 126 问题原因

    在这里可以解决Win32 error 126 报错的所有问题: 总结:     1.dll加载路径有问题,找不到dll     2.dll路径没有问题,使用了多个相互依赖的dll,dll版本不一致,重 ...

  2. 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“

    如果常规检查都做过可以仔细看下微信开放文档 这个里面的报错原因 如果都不是那么极有可能是(恭喜你!看样子你的H5页面日活人数还蛮多[呲牙]) 获取腾讯微信平台access_token超过每日默认上限2 ...

  3. R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差、使用plotrix包的std.error函数计算平均值的标准误差

    R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差.使用plotrix包的std.error函数计算平均值的标准误差 目录

  4. DSP调试报错:Error connecting to the target:Connect to PRSC failed

    CCS5.1.1.00031_win32安装到windows7 64位系统下,在线调试时出现错误:Error connecting to the target:Connect to PRSC fail ...

  5. VS中添加lib文件,编译出错:LINK : fatal error LNK1104: 无法打开文件:×××.lib解决办法

    添加库文件: 在VS中右击项目点属性: 添加头文件目录:   配置属性-->C/C++-->常规-->附加包含目录 加上头文件存放的目录.   添加lib文件:   配置属性--&g ...

  6. Adobe Flash player 10 提示:Error#2044:未处理的IOErrorEvent. text=Error#2036:加载未完成 的解决方法

    Adobe Flash player 10 提示:Error#2044:未处理的IOErrorEvent. text=Error#2036:加载未完成 的解决方法 参考文章: (1)Adobe Fla ...

  7. 2021-05-08 docker镜像无法删除 Error:No such image:xxxxxx

    docker镜像无法删除 Error:No such image:xxxxxx docker镜像无法删除,通过 docker images 查看镜像明明存在就是删除不了. 删除提示:Error:No ...

  8. nginx报错:nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log“ failed (2: N

    参考文章1:nginx error_log 错误日志配置说明 如图,启动nginx时报错: [root@RV1126_RV1109:/usr/sbin]# nginx -c /etc/nginx/ng ...

  9. 在ubuntu上mysql出现ERROR 1045(28000):Access denied for user ‘young‘@’localhost‘(using password:NO)...

    刚在ubuntu12.04.02上安装了mysql.在终端输入mysql后,出现如下错误: 在ubuntu上mysql出现ERROR 1045(28000):Access denied for use ...

最新文章

  1. 学习对象对神经网络迭代次数的影响
  2. Eclipse导入项目facet版本问题:Project facet Java version 1.8 is not supported
  3. 网易=4 ×(新浪 + 搜狐)
  4. 银行喜欢全额还款的客户,还是喜欢最低还款客户?--编辑
  5. 获取文件的MIME类型
  6. 事理图谱:一种纯学术需求、无法落地、漏洞百出的新技术或新概念?
  7. textarea支持a标签_微慕小程序开源版A标签优化说明
  8. else 策略模式去掉if_java – 用状态/策略模式替换if/else逻辑
  9. 统计学习(二):统计推断
  10. BZOJ1877 [SDOI2009]晨跑 【费用流】
  11. 使用idea导出数据库脚本
  12. (附源码)Python在线办公系统 毕业设计 071116
  13. 【jzoj2162】【差分】【2017.7.12普及】Square
  14. 纯css实现乌云密布的天气图标
  15. 16光8电全千兆宽温工业交换机16千兆光8千兆网口机架式网管型工业级以太网交换机
  16. 当Facebook、谷歌等成为数据泄露大头时,它们如何改变?(上)
  17. Xilinx的智能门控时钟技术你了解吗?
  18. python安装anacondapanda_关于pandas:Pyarrow不安装python 3.7(anaconda 5.3.0,windows x64版本)...
  19. Python周刊517期
  20. win10下搭建grpc 以及demo(idea maven java)

热门文章

  1. dslabs实验记录
  2. Android 屏幕适配全攻略
  3. 固话号码认证有什么好处?固话号码认证有什么作用?
  4. MYSQL事务原理分析
  5. PMI、国家外专局-项目管理高端论坛在深圳召开
  6. 中铁员工入职培训心得体会
  7. mac软件卸载不干净怎么回事 mac如何卸载软件干净
  8. 赋能千行百业,AI究竟走到哪一步了?
  9. 什么是基础设施建设?
  10. Cris 的 Scala 笔记(五):流程控制