ffi Error:Dynamic Linking Error:Win32 error 126
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++ 的构建工具,死马当活马医吧,执行了博客中的命令,然后,好了。。。
解决方案
- 安装
Node.js
- 通过管理员权限,打开 CMD 或 PowerShell
- 执行
npm install --global --production windows-build-tools
这不是一个很好的解决方案,问题核心应该是国外电脑的 C++ 构建工具中缺失,导致电脑的某些环境未安装,用此方法需要先安装 Node.js ,然后再执行相关命令,对于非专业人员,太过复杂。但是如果直接安装 C++ 构建工具,好像需要安装 VS,两者相比取其轻,暂时先用 Node 吧,能做的也就让用户手动安装 Node ,再提供个脚本一键执行后续所有操作吧。
国内用户在通过 npm 安装这个的时候,可能会因为网络问题安装不成功,不过国内用户很少出现因为这个问题导致的白屏问题。后面继续优化吧。
鸣谢:
关于在electron中调用C++动态库的经验总结
2022年10月21日 更新
上述解决问题的方案有歧义,已通过其他方式彻底解决该问题
- electron 打包时,需要将使用的 dll 文件移动到指定目录下,build 配置字段为 extraResources、extraFiles;具体配置去看官方文档
- 在使用 dll 时,获取绝对路径,根据开发环境和生产环境,获得不同的路径。通过在 process.env.PATH 环境变量上追加 dll 的绝对路径的文件目录(不包含dll名称),进行下一步。
- 引用 dll 时只使用 dll 名称,不通过路径引入。let dll = ffi.Library(“dllName”,{…})
- 获取 dll 后将环境变量的值进行恢复。
ffi Error:Dynamic Linking Error:Win32 error 126相关推荐
- js调用c++实现的dll, Error: Dynamic Linking Error: Win32 error 126 问题原因
在这里可以解决Win32 error 126 报错的所有问题: 总结: 1.dll加载路径有问题,找不到dll 2.dll路径没有问题,使用了多个相互依赖的dll,dll版本不一致,重 ...
- 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
如果常规检查都做过可以仔细看下微信开放文档 这个里面的报错原因 如果都不是那么极有可能是(恭喜你!看样子你的H5页面日活人数还蛮多[呲牙]) 获取腾讯微信平台access_token超过每日默认上限2 ...
- R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差、使用plotrix包的std.error函数计算平均值的标准误差
R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差.使用plotrix包的std.error函数计算平均值的标准误差 目录
- 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 ...
- VS中添加lib文件,编译出错:LINK : fatal error LNK1104: 无法打开文件:×××.lib解决办法
添加库文件: 在VS中右击项目点属性: 添加头文件目录: 配置属性-->C/C++-->常规-->附加包含目录 加上头文件存放的目录. 添加lib文件: 配置属性--&g ...
- Adobe Flash player 10 提示:Error#2044:未处理的IOErrorEvent. text=Error#2036:加载未完成 的解决方法
Adobe Flash player 10 提示:Error#2044:未处理的IOErrorEvent. text=Error#2036:加载未完成 的解决方法 参考文章: (1)Adobe Fla ...
- 2021-05-08 docker镜像无法删除 Error:No such image:xxxxxx
docker镜像无法删除 Error:No such image:xxxxxx docker镜像无法删除,通过 docker images 查看镜像明明存在就是删除不了. 删除提示:Error:No ...
- 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 ...
- 在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 ...
最新文章
- usaco Prime Palindromes
- 机器学习数学基础:随机事件与随机变量
- The hierarchy of the type is inconsistent
- 面试再也不怕问到HashMap(二)
- Packet for query is too large(mysql写入数据过大)
- Oracle 之 用户与权限
- win10删除开机密码_取消WIN10开机密码的方法
- python map lambda表达式_Python的lambda表达式、filter、map、reduce等函数的用法
- 剑指offer(C++)-JZ34:二叉树中和为某一值的路径(二)(数据结构-树)
- 控制鼠标滚动,滚动指定的距离
- 解决XCode运行app在模拟器上,提示模拟器不存在
- chrome中如何下载文本文件(不是直接打开)
- linux cd 命令详解,Linux命令详解之–cd命令
- CAM350 导出DXF文件
- 本特利传感器9200-01-05-10-00
- CentOS7.6腾讯云中域名的备案详细流程
- 2016依然会给我惊喜,谢谢
- Cyberpunk!特斯拉发布皮卡,造型雷翻众人
- (12)WLAN体系结构及各层的主要功能
- 2023-2028年中国燕麦奶行业市场预测与投资规划分析报告
热门文章
- 服务器虚拟化属于saas技术吗,SaaS属于云计算服务吗
- 2019全球十大外汇交易平台排名
- dilink智能网联系统鸿蒙系统,Dilink3.0系统,它不只是当下最容易上手的智能网联系统...
- 1^3+2^3+3^3+...+n^3通项公式
- csv和excel php 解析_PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数
- 气动调节阀的安装细节以及技巧
- 「2B」的产品到底是什么
- 树立个人品牌:让名企hr们主动来找你
- Cris 玩转大数据之分布式服务协调神器 ZooKeeper
- Android退出APP 并杀掉相关的所有进程