upgrade vs 2019 注意事项
-
自定义的Vector和系统的定义冲突winnt.h(RtlValidateCorrelationVector( In PCORRELATION_VECTOR Vector))
如果要定义类型,请定义标识性特别强和项目名称相关。
这个问题在于报出的error,很难去排查。 -
头文件引入不规范
比如里面用到了QPainterPath class,但是在实现时未引用头文件,在vs2013上可以编译通过,高版本编译未能通过。 -
一些stl函数废弃
std::mem_fun std::bind2nd std::auto已经废弃
C++11函数 | C++17函数 |
---|---|
std::bind2nd | std::bind |
std::mem_fun | std::function |
std::auto | std::unique_ptr/std::shared_pt |
- QTDIR的环境变量设定
可以使用vs的Qt插件,来设置。尽量不要设置系统的环境变量,尤其是多版本的QT的开发下。造成环境的污染。
如果要设置使用QTDIR_+Qt的版本号区别 - 在使用vs2019升级vs2013项目时候,要注意两个版本的vs界面语言要一致(比如都是中文版,都是英文版),
否则在vs2019上在vcxproj右键看不到属性页。 - 在属性页中配置要应用的头文件,不能使用绝对路径。除了是vs自带,其他的一律是相对路径。
- vld不支持vs2019,已将相关部分代码屏蔽
- vs2019 debug模式下不支持 error C7553: lambda 中 不支持内联汇编程序
需要将内联汇编封装到inline函数中 - 由于我们项目用到了很多的第三方库,现在升级为vs2019 (c++17 stand)编译造成很多warning现象。
所有升级分步骤有计划升级,不能一下子版本跨的太大。 - 在引用第三方的库,最好是将源码包含,以便自己能够编译各种模式(MD,MT)。
如果使用编译好的dll,lib。升级时候可能会造成运行时崩溃,这是大坑。
在处理第三库,给我造成了很大的困难。尤其是第三方库又引入了其他的库。所以你一定要会使用vs自带的objdump工具去查看 dll、lib打包的obj文件版本和信息。 - 一定要下载Qt的pdb,源代码来调试。