前言
记录一下常见的动态连错误;
内容
Uncaught Error: Dynamic Linking Error: Win32 error 126
- DLL引用的路径错误,检查下DLL的路径是否正确
// 正确示例 let DllA = path.resolve(__dirname, '../../../xxx/xxxx.dll') // 生产环境 if (process.env.NODE_ENV !== 'development') { DllA = path.resolve(__dirname, '../../../../xxx/xxx' + arch + '.dll') DllB = path.resolve(__dirname, '../../../../xxx/xxxx.dll') }
Uncaught Error: Dynamic Linking Error: Win32 error 193
- DLL位数不对,根据系统来确定使用x86还是x64,可通过
os
进行判断引入相应的DLL
// 正确示例 const arch = os.arch() === 'x64' ? 'x64' : 'x86' let DllA = path.resolve(__dirname, '../../../xxx/xxx' + arch + '.dll') if (process.env.NODE_ENV !== 'development') { DllA = path.resolve(__dirname, '../../../../xxx/xxx' + arch + '.dll') }
Uncaught Error: Dynamic Linking Error: Win32 error 127
- DLL没有对应的函数或函数定义错误,可以使用
函数查看器
进行查看 - DLL错误,比如系统的一些DLL可以直接进行引用或者还需要引用其他的DLL文件(如: 引入A,但是A需要引入B)
函数查看器下载地址
// 正确示例 const User32 = ffi.Library('user32.dll', { GetTopWindow: ['long', ['long']], GetWindowThreadProcessId: ['int', ['long', 'int']], GetForegroundWindow: ['long', []], IsHungAppWindow: ['bool', ['long']] })
学无止境,谦卑而行.