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

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

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

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

msvc的工程规范(sln和vcxproj)

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

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

项目解决方案.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版本号的内容如下:

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升级后,运行出错如下:

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及之后的版本进行升级。

msvc++工程之vs版本升级及工程目录规范的更多相关文章

  1. Maven项目工程目录

    maven工程目录规范: src/main/java   存放项目的.java文件 src/main/resources   存放项目的资源文件,如spring.hibernate配置文件 src/t ...

  2. FrameWork逆向工程之MotioPI

    在BI项目建设的过程中我们一般都是有备份的,而且这个是必须有的!特别是例如ETL Model,还有Data Model这一类的元数据,这些东西如果我们没有备份,而恰好的我们的开发模型又在某一天离我们而 ...

  3. Eclipse下的java工程目录

    对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在Eclipse编写Java程序中,出现频率最高的错误很可能就是路径问题. 这些问题原因其实都是一个,就是关 ...

  4. 转载:Eclipse下的java工程目录

    原文链接:https://www.cnblogs.com/milantgh/p/4029003.html 对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在 ...

  5. iOS逆向工程之Theos

    如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先 ...

  6. nodejs学习笔记一:安装express框架并构建工程目录

    偶遇node是在一个阳光明媚的上午,无意间打开博客看到一片关于nodejs的介绍,通读全篇后,心情跌宕起伏,哎呀,这么好的东西我竟然现在才知道,这是最气的,于是马上开始制定学习nodejs计划,好了, ...

  7. 初始化 Gradle 工程目录(转自: 隔叶黄莺 Unmi Blog)

    最近重新在 Eclipse 中打开旧的 Maven 项目,总有些什么错误,备受折磨.期间试手了 Ant+Ivy, 现今试用了下 Gradle,感觉不错,它应该才是我真想要的,Maven 差不多该扔到一 ...

  8. android的helloworld工程目录学习

    android的helloworld工程目录学习 Android工程的主要目录有src.gen.Android X.X.bin.res等文件夹. 1.     Src文件夹 Src文件夹包含java源 ...

  9. Android Studio工程目录介绍

    来自知乎: Android Studio工程目录结构 .gradle 是gradle运行以后生成的缓存文件夹. .idea 是android studio/Intellij IDEA工程打开以后生成的 ...

  10. C#.bat文件清理工程目录

    另外一种方法是自己写一个bat文件来清理,非常方便,下面是自己写的验证过比较好用的方法. bat文件内容如下: echo 正在清理VS2010工程中不需要的文件 echo 请确保本文件放置在工程目录之 ...

随机推荐

  1. 京喜APP - 图片库优化

    作者:京东零售 何骁 介绍 京喜APP早期开发主要是快速原生化迭代替代原有H5,提高用户体验,在这期间也积累了不少性能问题.之后我们开始进行一些性能优化相关的工作,本文主要是介绍京喜图片库相关优化策略 ...

  2. 2022-11-07:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。 图用一个大小为 n 下标从 0 开始的数组 edges 表示, 节点 i 到

    2022-11-07:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边. 图用一个大小为 n 下标从 0 开始的数组 edges 表示, 节点 i 到 ...

  3. 2020-08-21:网络IO模型有哪些?

    福哥答案2020-08-21: 福哥口诀法:阻非复信异(阻塞.非阻塞.多路复用.信号驱动.异步) [知乎答案](https://www.zhihu.com/question/416128059)操作系 ...

  4. 2022-01-06:N个结点之间,表世界存在双向通行的道路,里世界存在双向通行的传送门. 若走表世界的道路,花费一分钟. 若走里世界的传送门,不花费时间,但是接下来一分钟不能走传送门. 输入: T为

    2022-01-06:N个结点之间,表世界存在双向通行的道路,里世界存在双向通行的传送门. 若走表世界的道路,花费一分钟. 若走里世界的传送门,不花费时间,但是接下来一分钟不能走传送门. 输入: T为 ...

  5. 【GiraKoo】夜神模拟器提示“当前设备未开启VT”

    [解决]夜神模拟器提示"当前设备未开启VT" 环境 Windows 11 夜神模拟器64位 现象 启动夜神模拟器时,提示"检测到当前设备未开启VT,请先开启VT后再运行6 ...

  6. MD5加密后为0e开头的字符串

    QNKCDZO         0e830400451993494058024219903391 s878926199a      0e545993274517709034328855841020 s ...

  7. R 语言中的高级图像处理包

    最新的 magick 包是为能够在 R 中更现代化.简单化高质量图像处理而进行的一次努力.该包封装了目前最强大的开源图片处理库 ImageMagick STL . ImageMagick 库具有大量功 ...

  8. ChatGPT玩法(二):AI玩转Excel表格处理

    前言 在线免费体验ChatGpt:https://www.topgpt.one 你是否还在为记不住Excel的繁琐函数和公式而苦恼?如果是这样,那么不妨试试ChatExcel.即使你对函数一窍不通,也 ...

  9. 发布:iNeuOS工业互联网操作系统 V5 Preview1 版本(自主可控)

    这半年来一直深耕包头,这个城市比较不错,但是推进项目的难度确实挺大的.与开发产品相比,后者更省心.但是光研发产品,没有项目依托,没办法产生价值.有些大学和研究院确实有好的产品,但是没有市场化能力,再好 ...

  10. 记一次 .NET 某旅行社审批系统 崩溃分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序跑着跑着就崩溃了,让我看下怎么回事,其实没怎么回事,抓它的 crash dump 就好,具体怎么抓也是被问到的一个高频问题,这里再补一下链接: ...