总结:编译器版本和windeployqt版本不匹配导致的生成的exe文件运行不了。
问题描述:
ChartZoomMove.exe-系统错误,由于找不到 libgcc s dw2-1.d,无法继续执行代码。重新安装程序可能会解决此问题。
打包命令如下:
C:\Users\1\Desktop\release>"D:\Qt\Qt5.15.2\5.15.2\mingw81_32\bin\windeployqt.exe" ChartZoomMove.exe
打包过程:
C:\Users\1\Desktop\release>"D:\Qt\Qt5.15.2\5.15.2\mingw81_32\bin\windeployqt.exe" ChartZoomMove.exe
C:\Users\1\Desktop\release\ChartZoomMove.exe 32 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Direct dependencies: Qt5Core Qt5Gui Qt5Widgets
All dependencies : Qt5Core Qt5Gui Qt5Widgets
To be deployed : Qt5Core Qt5Gui Qt5Svg Qt5Widgets
Qt5Charts.dll is up to date.
Qt5Core.dll is up to date.
Qt5Gui.dll is up to date.
Qt5Svg.dll is up to date.
Qt5Widgets.dll is up to date.
libGLESv2.dll is up to date.
libEGL.dll is up to date.
D3Dcompiler_47.dll is up to date.
opengl32sw.dll is up to date.
libgcc_s_seh-1.dll is up to date.
libstdc++-6.dll is up to date.
libwinpthread-1.dll is up to date.
qsvgicon.dll is up to date.
qsvgicond.dll is up to date.
qgif.dll is up to date.
qgifd.dll is up to date.
qicns.dll is up to date.
qicnsd.dll is up to date.
qico.dll is up to date.
qicod.dll is up to date.
qjpeg.dll is up to date.
qjpegd.dll is up to date.
qsvg.dll is up to date.
qsvgd.dll is up to date.
qtga.dll is up to date.
qtgad.dll is up to date.
qtiff.dll is up to date.
qtiffd.dll is up to date.
qwbmp.dll is up to date.
qwbmpd.dll is up to date.
qwebp.dll is up to date.
qwebpd.dll is up to date.
qwindows.dll is up to date.
qwindowsvistastyle.dll is up to date.
qwindowsvistastyled.dll is up to date.
Creating qt_ar.qm...
Creating qt_bg.qm...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_da.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_es.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_gd.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_tr.qm...
Creating qt_uk.qm...
Creating qt_zh_TW.qm...
C:\Users\1\Desktop\release>
从打包过程和报错信息找到原因:
你的实际 ChartZoomMove.exe 是用 dw2
异常模型的 MinGW 编译的,但你用来部署的 windeployqt
所在目录对应的 MinGW 使用的是 seh
异常模型。
这两者不兼容,导致:
程序运行时需要 libgcc_s_dw2-1.dll
,
但 windeployqt 带的是 libgcc_s_seh-1.dll
,
因此系统报缺少 libgcc_s_dw2-1.dll
。
这是Qt_5_15_2_MinGW_32_bit编译器编译时候实际使用的编译器路径D:\Qt\Qt5.15.2\Tools\mingw810_32\bin\gcc.exe,可能是安装或者什么原因默认的这个路径,前面打包的路径是D:\Qt\Qt5.15.2\5.15.2\mingw81_32\bin\windeployqt.exe,所以windeployqt.exe和编译器路径版本不匹配导致动态出现问题。
在该编译器路径下面没有对应的windeployqt.exe文件,因此使用D:\Qt\Qt5.15.2\Tools\mingw810_32\bin\gcc.exe编译完成就会打包不了,暂时打包问题解决不了。
复制libgcc_s_dw2-1.dll到文件夹下,不提示缺少动态库,但是仍然运行不了报错0x0000007b,
还是需要编译器和windeployqt版本匹配,不然运行不了。