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. usaco Prime Palindromes
  2. 机器学习数学基础:随机事件与随机变量
  3. The hierarchy of the type is inconsistent
  4. 面试再也不怕问到HashMap(二)
  5. Packet for query is too large(mysql写入数据过大)
  6. Oracle 之 用户与权限
  7. win10删除开机密码_取消WIN10开机密码的方法
  8. python map lambda表达式_Python的lambda表达式、filter、map、reduce等函数的用法
  9. 剑指offer(C++)-JZ34:二叉树中和为某一值的路径(二)(数据结构-树)
  10. 控制鼠标滚动,滚动指定的距离
  11. 解决XCode运行app在模拟器上,提示模拟器不存在
  12. chrome中如何下载文本文件(不是直接打开)
  13. linux cd 命令详解,Linux命令详解之–cd命令
  14. CAM350 导出DXF文件
  15. 本特利传感器9200-01-05-10-00
  16. CentOS7.6腾讯云中域名的备案详细流程
  17. 2016依然会给我惊喜,谢谢
  18. Cyberpunk!特斯拉发布皮卡,造型雷翻众人
  19. (12)WLAN体系结构及各层的主要功能
  20. 2023-2028年中国燕麦奶行业市场预测与投资规划分析报告

热门文章

  1. 服务器虚拟化属于saas技术吗,SaaS属于云计算服务吗
  2. 2019全球十大外汇交易平台排名
  3. dilink智能网联系统鸿蒙系统,Dilink3.0系统,它不只是当下最容易上手的智能网联系统...
  4. 1^3+2^3+3^3+...+n^3通项公式
  5. csv和excel php 解析_PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数
  6. 气动调节阀的安装细节以及技巧
  7. 「2B」的产品到底是什么
  8. 树立个人品牌:让名企hr们主动来找你
  9. Cris 玩转大数据之分布式服务协调神器 ZooKeeper
  10. Android退出APP 并杀掉相关的所有进程