Electron——常見動態鏈錯誤


前言

記錄一下常見的動態連錯誤;

內容

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']]
})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM