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