经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
msvc++工程之vs版本升级及工程目录规范
来源:cnblogs  作者:赵青青  时间:2023/8/7 9:13:49  对本文有异议

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

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

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

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


msvc的工程规范(sln和vcxproj)

  1. 项目根目录
  2. src/
  3. vs2012/
  4. 更多的vs版本/
  5. vs2022/
  6. lib/
  7. ...

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

  1. 项目解决方案.sln
  2. project1目录
  3. project1.vcxproj
  4. project1.vcxproj.filters
  5. project2目录
  6. project2.vcxproj
  7. project2.vcxproj.filters
  8. ......
  9. props目录
  10. xx_debug.props
  11. xx_hybrid.props
  12. xx_editor_lib.props

升级vs的版本步骤

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

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

  1. Microsoft Visual Studio Solution File, Format Version 12.00
  2. # Visual Studio Version 17
  3. VisualStudioVersion = 17.2.32630.192
  4. MinimumVisualStudioVersion = 10.0.40219.1

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

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

  1. Build started...
  2. 1>------ Build started: Project: mymfc, Configuration: Debug Win32 ------
  3. 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.
  4. 1>Done building project "mymfc.vcxproj" -- FAILED.
  5. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

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


不同vs版本之间的差异

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


原文链接:https://www.cnblogs.com/zhaoqingqing/p/17610182.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号