Error: Dynamic Linking Error: Win32 error 1920

使用ffi-napi在electron项目中调用非根目录的dll报错,只能是根目录,一旦不在同一个目录就报这个错误,是没有权限吗,如何解决,求解

img

是这样的,Electron 默认使用了沙箱环境,他会限制对于文件系统的访问权限,你可以在创建之前设置sandbox为false,禁用沙箱模式,应该就可以放宽权限。或者试一试用绝对路径。希望试试,望采纳

window11
electron20.0.0
nodejs 17.9.1
@lwahonen/ffi-napi": "^4.0.12",
@lwahonen/ref-napi": "^4.0.8",

首先需要确保你的electron版本和ffi-napi版本是否兼容,node-gyp版本和node版本是否兼容,dll文件路径是否正确
参考 https://zhuanlan.zhihu.com/p/512579857


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