VS2015+QT从QT5.7转到QT5.8遇到的问题及解决

VS2015+QT从QT5.7转到QT5.8遇到的问题及解决

今天把VS2015+QT的组合升了下级,由原来的QT5.7升级到QT5.8。

没想到,却发生了令人头疼的问题。出现了一堆错误:

首先遇到的问题是找不到文件:
1>—— 已启动全部重新生成: 项目: QtGuiComboxBox, 配置: Debug Win32 ——
1> Moc’ing QtGuiComboxBox.h…
1> 系统找不到指定的路径。
1> Uic’ing QtGuiComboxBox.ui…
1> 系统找不到指定的路径


1> Rcc’ing QtGuiComboxBox.qrc…
1> 系统找不到指定的路径。
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已退出,代码为 3。
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

而后在网上搜索了下,多数说要改相应文件属性页里的自定义生成工具里的:命令行和附加依赖项。我按我新的版本号的路径改了,但是还有问题。

后面的问题就不说了,没什么太大意义。关键的问题是:这个工程项目在原来是正常的,现在由于换了QT版本号而发生的这一系列问题。于是尝试以如下方式解决了问题:

找到该工程目录里定义工程的文件(如下),发现这两文件中有很多定义相应QT路径的文本,全是5.7字样,我替换的几个5.8零星的洒落在各处。可以想象,如果我在VS里要找这一堆路径去改的话,绝对是找不齐的。于是执行文本替换到新的路径。我基本就是将所有的5.7改为5.8,就算完成了。

两个文件名为:
XXX.vcxproj.user
XXX.vcxproj

PS:网络上有一篇文章:http://lheric.blog.163.com/blog/static/1165967312014018102338210/

说的也是相关的事情,大家可以参考。

==================糟心的分割线====================

这段话已经写了三遍了,我怀疑与万能五笔输入法有关,一切换输入法,谷歌浏览器就崩了!言归正转,说正经事。

就在前述解决方法发布不久,我发现其实VS2015还是有相关的解决方案的。而且,简单,高效、可靠。不废话了,上图:

第一步:在解决方案资源管理器中,解决方案上右键,在弹出菜单上选择【更改解决方案的QT版本】,如图:

第二步:在弹出的设置中,选择你要切换的版本号,这里由于我是把原来的QT卸载掉了,所以这里只有现在新的版本。如下图:

第三步:严格来说,这一步已经不是解决问题。因为前两步完成之后,问题肯定就已经解决了。重新生成解决方案。

于是:项目正常输出信息。不在是一堆找不到这个,找不到那个的信息。

另外,这里还有一个与之前版本有关的问题记在这里。由于我之前的版本里有部分Debug文件夹里加了如下图的三个动态链接文件。所以在换了新版本,并生成了新的可执行文件后,会有一个提示:

错误提示大概如下图:这个图是我从网上找的,意思是一样的。

原因是,可执行文件会优先找它当前目录下的DLL文件,所以导致新版本的文件使用了旧版本的DLL文件,出现了不兼容的问题。

解决方法:将几个DLL文件删除了事。同时也教育我们,生成的可执行文件与其使用的DLL文件要匹配。比如,我新版本是QT5.8,新生成执行文件后,就绝对不能再用之前QT5.7的DLL文件。