1、开发环境
win11-64 + qt5.12 + msvs2017-64bit-release
2、问题描述:
在项目中需要引入QtWebApp的httpsever,logging,templateengine三个模块。
刚开始用的没啥问题,有一天更新了下vs的小版本,然后编译报错:
error C2440: “=”: 无法从“_Other”转换为“_Ty”
error C2440: “reinterpret_cast”: 无法从“int”转换为“quintptr”
排查了好久,VS和Windows Kits版本都卸载装回了原来的版本,还是报错,就差重装系统了。
又仔细排查了报错,提示无法从int
转换为qunitptr
,可是nullptr
怎么是int
呢?
最终发现httpglobal.h发现有重定义nullptr
,问题就出在这个为什么导致重定义上?
问题就出在这个__cplusplus
上,查阅资料发现,这个是vs的历史遗留问题,增加编译选项 -Zc:__cplusplus
即可