msvc++工程之vs版本升级及工程目录规范

本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/17610182.html



为什么要升级msvc++工程版本#

对msvc++工程进行vs版本升级,一方面是可以使用较新的C++标准及对64位更好的支持。

首先你需要对msvc++ project文件有一定的了解,主要是vcxproj和vcxproj.filter这两个文件,升级的时候需要手动修改sln和vcxproj文件。

vs(visual stuiod)中vc++工程的Filter和Folder及vcxproj知识 - 知乎 (zhihu.com)


msvc的工程规范(sln和vcxproj)#

Copy
项目根目录 src/ vs2012/ 更多的vs版本/ vs2022/ lib/ ...

以vs版本号做文件夹的命名好处是因为同一个c++工程在不同的vs版本上可能会有兼容性的问题,再展开不同的vs版本目录结构都是如下:

Copy
项目解决方案.sln project1目录 project1.vcxproj project1.vcxproj.filters project2目录 project2.vcxproj project2.vcxproj.filters ...... props目录 xx_debug.props xx_hybrid.props xx_editor_lib.props

升级vs的版本步骤#

  1. 建议复制原来的sln和vcxproj文件
  2. 修改新sln中的vs的版本号
  3. 改完后使用新版本的vs打开新的sln,就会提示你对包含的project进行升级,点击升级即可
  4. 修复新版本下的语法、编译、链接等等错误
  5. 当然在真实的商业大型项目中,升级vs版本的过程是很痛苦及漫长的,甚至会出现无源码的工程无法升级。

sln文件头标识vs版本号的内容如下:

Copy
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.2.32630.192 MinimumVisualStudioVersion = 10.0.40219.1

例个例子,我把3个代码量很少的学习工程,从vs2012升级到vs2022

Console类型的cpp项目升级很顺利,Windows类型的cpp工程也很顺序,mfc升级后,运行出错如下:

Copy
Build started... 1>------ Build started: Project: mymfc, Configuration: Debug Win32 ------ 1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(480,5): error MSB8041: MFC libraries are required for this project. Install them from the Visual Studio installer (Individual Components tab) for any toolsets and architectures being used. 1>Done building project "mymfc.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

通过报错信息可知是缺少mfc环境,需要安装。


不同vs版本之间的差异#

升级完之后,对比不同版本的sln及vcxproj之间的diff,主要集中在Toolset及平台设置方面,当然是从vs12及之后的版本进行升级。


作者:赵青青   一名在【网易游戏】做游戏开发的程序员,擅长Unity3D,游戏开发,.NET等领域。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
posted @   赵青青  阅读(361)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验
历史上的今天:
2014-08-06 ReSharper 全教程
2014-08-06 Resharper 详细教程
2014-08-06 C# 泛型约束 xxx Where T:约束(二)
2014-08-06 C# 泛型约束 xxx<T> Where T:约束(一)
点击右上角即可分享
微信分享提示
CONTENTS