解决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.dll
DLL Name: ADVAPI32.dll
DLL Name: libgcc_s_seh-1.dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: libwinpthread-1.dll
DLL Name: USER32.dll
DLL Name: libstdc++-6.dll
比如上面这个,你就需要将libgcc_s_seh-1.dll、 libwinpthread-1.dll、 libstdc+±6.dll 的dll 放置在你的flutter构建出来的exe的同级目录下。