昨天导出一个QT程序无意中犯了一个小错误,导致后面运行QT程序出现错误从而导致我把整个QT的环境配置都理了一遍。
事情是这样的,昨天我为了导出一个程序,本应该打开当前编译环境下的命令行窗口,但是我忘记了,打开了cmd就开始准备导出了。
然后输入语句 “windeployqt 程序名.exe” 就开始导出了,导出很顺利,没有任何问题和报错,但是我双击程序却是无法运行。关于QT的程序导出后面我会单独出一篇。
我当时就纳闷了,因为没有考虑到是终端不同的问题,后面就上网搜,因为程序运行时报错显示:无法定位程序输入点xxxxx与动态链接库Qt5Cored.dll上,xxxxx是一大串看不懂的码,此处便略写。再后来上网搜索各种方法,有问题,上网搜嘛。然后也参考了各种解决方案,但这个问题出现的问题可能有很多,各种尝试之后依然没有找到合适的解决方案。看了环境变量,复制了Qt5Cored.dll到windows\System32和windows\SysWOW64目录下也都没有效果。后来突然灵光一闪就想到了是终端不对的问题,然后换QT 5.9.1 for Desktop的终端进行命令导出,导出成功后也成功运行了。
以为事情就到此结束了,但是万万没想到的是,后来我在QT的编译器下编译运行后发现运行不了了?
上面只有一行提示:程序异常结束。
这个提示基本等于没有提示。昨天搜了好久的方法都没有搜到,而导出的那个程序还是好好的。
这就奇了怪了,我动过环境变量,便反复把环境变量看了又看,我也没有调用第三方链接库的,怎么突然就无法运行了呢?
今早又把问题在网上搜了搜,反复没有搜到太好的答案。中间还卸载重装过QT两次。突然想了下,不通过QT编译器运行程序,直接通过双击生成但没有打包的程序来运行试试。
果然不出所料,出现错误:无法定位程序输入点xxxxx与动态链接库Qt5Cored.dll上
然后想了下之前为了解决打包错误的问题的各种手段,最后,终于找到了问题的点,就是复制到windows\System32和windows\SysWOW64下的Qt5Cored.dll引发的错误!!
把这两个之前复制进去的文件删除,问题终于成功解决!!
总结一下:
QT的环境配置没有那么复杂,只需要将QT安装的一些路径配置到环境变量就可以了,主要是~\Qt\Qt5.9.1\5.9.1路径下的bin文件(比如我的版本是5.9.1),然后根据自己的编译环境选择,比如我的是Qt Creator,那就是\Qt\Qt5.9.1\5.9.1\mingw53_32\bin,把这个所在的路径添加到系统变量path即可,其他还有tool文件下的bin文件也添加进去就可以了,而在C:\windows\System32和C:\windows\SysWOW64文件夹下单独配置的任何都是有问题的。
诶诶,被这问题一耽误,本来还想着这两天多写写代码,早点把这个个人项目写个demo出来,估计也写不了多少了。