QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历

前言(问题描述):

QT 在QTcreator之外点击exe文件运行时出现的dll缺失无法定位程序输入点(0xc000007b) 问题的一次解决经历。
初学QT,通过各种查资料稀里糊涂解决了这次问题,现将这次的解决过程附上。
水平有限,仅做参考,若有帮助,万分荣幸

环境:

QT 5.12.7

安装配置

在开始的几次安装中,均选择了如下的组件选项(即选择MSVC2017以及MinGW的64版本,配上几个基础选项)
QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历

过程

在这个环境下,首先出现的问题是dll文件缺失警告,例如:QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
在网上搜索后采用了更改环境变量Path的值优先,直接复制缺失的dll为备选的方案,这里同样的解决方法的帖子比较多,我以我最开始看到的一个为例:
QT "无法启动此程序,因为计算机丢失Qt5Core.dll。"等dll丢失问题

但是不知道为什么,在进行Path的方法,甚至直接复制进去dll文件在电脑上都出现了下面的问题:
QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
我于是接着查找这个报错的解决方法,发现和先前的解决方法是一样的——但是显然仅经过这个操作我没能顺利解决问题。

在这种情况下,首先对Path的新建与编辑的位置进行了上下交换——甚至还试过将Qt对应的这个bin的路径改到最上面(然鹅这肯定是有问题的),但是还是没有解决问题。

于是怀疑是安装过程出现了问题,即dll可能已经损坏。但是经过多次重新安装仍然有问题(这里尝试了安装QT5.12.9的官网版本进行对比但是发现问题不在这)。

接下来先后运行了QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
以及DirectX Repair V3.5。

(这中间还因为误操作导致了我的c++库出现了问题,vcruntime140.dll丢失qq都打不开了。经vcruntime140.dll丢失,才修复。)

这之后突然就没有了无法定位程序输入点的问题,但是变成了新的问题:(0xc000007b)QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
还是经过网上查找,还是需要DirectX Repair工具进行修复——
同时,为了更好的解决c++库的问题,就找了一个更新版本的DX工具:
DirectX修复工具增强版

——大佬牛逼!!!

但很可惜现在还是不行——运行起来还是报错。幸运的是,我在看到了这位大佬的另一篇文章运行游戏时出现0xc000007b错误的解决方法
里面有段话:

也许大家会问了:我玩的游戏都有DirextX 11的特效了,还会和DirectX 9有关系吗?事实上,游戏公司为了游戏的兼容性,往往都是基于DirectX 9.0的API开发游戏,然后加上DirectX 10和DirectX 11的特效,这样的话,不管什么样的显卡都可以玩游戏。也正是如此,DirectX 9.0有问题会影响目前最新的游戏。还有人会问了:我的Windows 7都能支持DirectX 11了,Windows 10都支持DirectX 12了,怎么还不行?这里要做两点说明,首先,Windows 7是最高支持DirectX 11,向下兼容DirectX 9以及DirectX 10,并不是Windows 7只支持DirectX 11;还有,原版的Windows中只包含了最基本的DirectX组件,而游戏需要的往往是较高级的组件(如d3dx9_42.dll、xinput1_3.dll),系统缺失这些关键的文件会造成游戏无法运行或出现0xc000007b错误。还有人会问:我已经装过DirectX 9.0了,也安装过c++了,还是不管用呀?这里有一个很大的误区,就是用64位系统的用户认为只需要安装64位的组件。这是不对的,因为游戏开发商为了游戏兼容性,往往都是在32位系统上开发的程序,以便可以同时兼容32位系统和64位系统,所以在64位系统上也必须同时安装32位和64位的库文件才行。重要的事情再重复一遍:32位系统要安装32位的DirectX和c++库文件,而64位系统一定要同时安装32位和64位的库文件,这是解决这个问题的关键。

于是我怀疑是不是因为我在安装的时候没有安勾选装32位的部分从而导致库不完整,新的安装选项如下:(增加了对应的32位版本)
QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历
这次在进行Path的那个环境变量设置的方法就已经可以顺利打开了。
QT 在QTcreator之外点击exe文件运行时出现的‘dll缺失’,‘无法定位程序输入点’,‘(0xc000007b)’问题的一次解决经历

还请再次注意:

在处理这个问题的多个步骤中,由于我实在水平有限:在关于c++库缺失等问题的处理上,都是知其然不知其所以然,仅仅按照查找到的方法进行操作而已——因而势必有多余的不必要的操作和不简洁的部分。我也仍然不确定是具体哪个库或者是哪一步的操作导致了先前的无法定位程序输入点的报错。

不过幸运地,最终稀里糊涂地解决了——因而我打算把这个过程记录了下来。如果有人和我遇到了一样的问题,或许可以从这些步骤中得到一些解决问题的可能的思路。

*第一篇CSDN的文章,纪念一下,嘿嘿