解決flutter加載dll 報錯問題
LoadLibrary 報錯 126 or 193
明確一點:flutter構建exe 時默認是MSVC的。
1. 先檢查dll 的位數是否滿足
file ***.dll
output: PE32+ executable (DLL) (console) x86-64, for MS Windows, 19 sections
這種是64位的機器。
滿足的話可以看第二點了。
2. 查看dll 依賴
objdump -p opus.dll | grep ‘DLL Name’ #windows下面會多個.exe ,mingw
若出現api-ms-*** 這種的,證明其dll 是visual studio(MSVC) 構建的。
若沒有的話,則證明其是非visual studio 構建的。
3. 如何解決這種報錯
若是mingw構建的話,需要將mingw文件夾下的 dll 依賴拷貝到你構建的 flutter.exe 的同級目錄下。
objdump -p libsoe.dll | grep 'DLL Name'DLL Name: WINMM.dllDLL Name: ADVAPI32.dllDLL Name: libgcc_s_seh-1.dllDLL Name: KERNEL32.dllDLL Name: msvcrt.dllDLL Name: libwinpthread-1.dllDLL Name: USER32.dllDLL Name: libstdc++-6.dll
比如上面這個,你就需要將libgcc_s_seh-1.dll、 libwinpthread-1.dll、 libstdc+±6.dll 的dll 放置在你的flutter構建出來的exe的同級目錄下。