报错概述:electron通过ffi调用自己编写的c++生成的dll报错,本机运行正常无报错,其他电脑报错(无相应开发环境,无构建工具)
本机环境:electron@20.0.0(该版本以上的electron不支持ffi)、vs2022
报错内容:Uncaught Exception:Error: Dynamic Linking Error: Win32 error 126 at new DynamicLibrary...
由于在本机打包后运行正常无问题,考虑不是所执行的dll缺失(请先排除路径缺失),考虑是环境导致的。
126错误代码报错和win7上报3221225501错误代码实际上都是执行的dll缺失或该dll依赖的其他dll缺失。请排除以下问题再试此方法:
1.检查执行的dll路径
2.配置build字段的extraResources和extraFiles(这俩是用来复制文件的,如果没有打包没有使用asar的话就没必要用,具体使用方法网上有)
3.ffi.Library时不使用路径,而是将dll目录的路径添加到进程的环境变量中,使用dll名称进行调用等方法。
解决方法:
1.由于该dll是自己开发的,由vs生成的,生成的时候选择的模式是debug,注意,debug模式会将本机环境也绑定到dll依赖中去,导致其他电脑因没有这些环境而报错。故,如果是自己生成的dll,将debug模式改为release模式再生成!!!
2.如果使用release依然报错,尝试安装vc运行环境,在微软官网可以搜到,版本使用最新版