一个visual studio 导入qt工程引发的疑难杂症

发布于:2024-12-18 ⋅ 阅读:(128) ⋅ 点赞:(0)

事情由升级了visual studio 2022之后引发的。由于要调试新的功能,于是将工程切换回Debug模式下,于是问题就出现了。最早出现的是QString中的toStdstring()运行时抛出异常,接着就是QString的toStdWString,fromStdString,fromStdWString都抛出异常,之前一直没改动过什么的,都调试正常没有报错,怎么就报错了呢。各种尝试都没法解决,只能重装系统了。但是问题还是没解决。

写个demo测试一下吧。不写不知道,看了之后直接怀疑人生了。

Release模式下一切正常。Deubug模式下死活就是不行。

Release 模式下:
Release模式下
Debug模式下:在这里插入图片描述现在测试的英文,居然还少了第一个字符。
换成中文试试:
Deubug模式:
在这里插入图片描述Release 模式下:
在这里插入图片描述可能你会说,是不是文件编码问题导致的。这个其实我是最早就排除了。
不存在此问题!!那会不会是返回值优化导致的,这个我照着Qstring的toStdWSring的源码照着写一个ToStdWString函数结果是正常的。于是陷入了沉思好久…

直到我用Visual Studio 里面新建一个qt工程再进行测试时,结果居然是正常的。于是我逐个选项进行截图,比较我原先的工程,后来锁定了问题的所在。
在这里插入图片描述### 上述截图是我第一个demo工程,留意箭头所指的内容,Debug模式下,为什么 Build Config会选择Release 呢。
于是我打开另外一个Demo工程(也就是用Visual Studio直接生成的qt工程)
在这里插入图片描述通过对比不难发现Build Config 选择的是Debug。于是我把第一个demo中的Build Config 由Release改成Debug重新编译后,这下子正常了。
在这里插入图片描述因为原本的Qt工程我一直都在使用的,突然运行会报错,一下子无从入手。。。唯一改动比较大估计就是Visual studio的升级了。这个小的问题也许在老版本的isual studio没有体现出来,到了后续升级后一下子暴露出来了。同时由于visual Studio 2022也是在线升级的,无法安装老的版本来测试。
同时也因为我习惯了用QtCreator创建工程再由Visual studio导入工程,转成visual studio 的工程再进行编写。 经过此波折写下此文以防止别人不小心掉坑…此坑很隐蔽…
我把之前做的几十个qt工程检查了一遍,无一例外都是Debug模式下Build Config 的值都是Release,一个个手动改…


网站公告

今日签到

点亮在社区的每一天
去签到