运行Qt构建的程序时出现无法找到入口问题

事情是这样的

由于课程需要,今天又把很久之前用过的Qt装了回来,发现文档里面还有上一次遗留下来的项目,就试着在文件夹里运行了一下,结果却……

嗯??

啪的一下,很快啊

我检查了项目构建里的依赖调用

1
E:\QT\5.14.2\mingw73_64\bin\qmake.exe C:\Users\Xne3\Documents\untitled4\untitled4.pro -spec win32-g++ "CONFIG+=debug" && E:/QT/Tools/mingw730_64/bin/mingw32-make.exe qmake_all

跟运行的时候用的同一个啊,为什么会报错呢?

在网上搜Qt 无法找到入口

得到的答案不外乎

Qt版本混用

环境变量配置错误

我就只装过5.14.2这一个版本的Qt,不存在版本混用,检查环境变量,Path中也设置了E:\QT\5.14.2\mingw73_64\bin

最诡异的是,Qt creator里调试所使用的也是系统环境变量,然而在Qt creator里面调试程序能够正常运行,直接运行所构建的exe却会报错?!

我百思不得其解,在网上找了半天,各种方法都试了,就使用Qt自带的windeployqt打包依赖稍微靠谱点

然而……

这都到同一个目录了还能出错啊???

在ChatGPT的建议下,我找到个上古软件Dependency Walker对untitled4.exe进行依赖分析

没错它是这么说的

然而不管我下载32位还是64位的Dependency Walker,一运行都是直接未响应,查了下才发现,Dependency Walker最后更新于2006年

好在Github上有大佬重写了一个Dependencies

用Dependencies分析了下发现libstdc++-6.dll好像有点问题

有问题就换!

从某个犄角旮旯下了个libstdc++-6.dll,替换掉C:/…/mingw-w64/bin里的之后……

更多报错出现了!

一气之下把libstdc++-6.dll删了

结果程序正常运行了

再用Dependencies分析,发现这时候调用的libstdc++-6.dll变成Qt目录下mingw73_64的了

我终于知道是怎么回事了,合着Qt5Core.dll调用的libstdc++-6.dll有俩,我环境变量里mingw-w64又在Qt之前,所以运行exe的时候会一直调用mingw-w64里的

最后把Qt的环境变量移到mingw-w64上面,问题解决了