最近在做一个 Electron 项目,遇到了 Error: A dynamic link library (DLL) initialization routine failed.
折腾了两天,趁今天有时间,记录一下。 先说解决方案:
// binding.gyp
// 删除
"msbuild_settings": {
"ClCompile": {
"ExceptionHandling": "Async"
}
}
网上找的资料,大多说的是 node.js 的版本和 electron 自带的版本不匹配,而我遇到的这种情况很特殊。
背景
我的 C++ addon 是基于 node-addon-api 写的,依赖了 setupapi.lib。
本地环境:
- node: v16.14.2
- node-gyp: v10.1.0
- Pyhton: 3.11.3
- VS2022: 17.8.34330.188
electron 版本信息:
{
node: '16.16.0',
v8: '10.6.194.27-electron.0',
uv: '1.43.0',
zlib: '1.2.12.1-motley',
brotli: '1.0.9',
ares: '1.18.1',
modules: '109',
nghttp2: '1.47.0',
napi: '8',
llhttp: '6.0.7',
openssl: '1.1.1',
cldr: '41.0',
icu: '71.1',
tz: '2022e',
unicode: '14.0',
electron: '21.4.4',
chrome: '106.0.5249.199'
}
现象
- 本机 node 执行
node app.js
,正常。 - Electron 执行
npm run start
->electron main.js --enable-logging
,则报错。