Visual Studio Community version 2019打开旧VS2008项目的两个问题

本文解决VisualStudio2019编译VisualStudio2008MFC旧项目遇到的两个常见问题:缺少MFCLibrary及编译错误C2338。通过安装MFC组件并禁用va_start验证,成功使旧项目在新环境中编译运行。

最近用Visual Studio Community version 2019打开Visual Studio 2008旧项目的碰到两个问题,并解决。

问题1:提示缺少MFC Library

Visual Studio Community version 2019默认没有安装MFC,那么安装MFC Library,下载vs_community__1819445496.1557801037.exe,在Visual Studio Installer界面中点击Modify按钮,再选择安装安装以下包:

C++ MFC for latest v142 build tools (x86 & x64)

安装后问题解决!
安装界面如下:
Install MFC

问题2:编译出现error C2338

问题1解决后出现编译问题,
Severity Code Description Project File Line Suppression State
Error C2338 va_start argument must not have reference type and must not be parenthesized C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\vadefs.h 151

出错代码在以下位置,也不是我写的代码:

template <typename _Ty>
struct __vcrt_assert_va_start_is_not_reference
{
   static_assert(!__vcrt_va_list_is_reference<_Ty>::__the_value,
   "va_start argument must not have reference type and must not be parenthesized");
};

参考链接Compilation failes on VS2015, 使用以下代码:

#define _CRT_NO_VA_START_VALIDATION

应该是强制关闭检查,可以通过以下做法,在项目的Preprocessor界面,加入_CRT_NO_VA_START_VALIDATION设置,如下,问题解决,旧项目成功编译执行。

CRT_NO_VA_START_VALIDATION

Reference

关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
MFC libraries are required for this project
Compilation failes on VS2015 error C2338

### Visual Studio 2019Visual Studio Community 2022 的功能差异与版本区别 #### 版本概述 Visual Studio 是 Microsoft 提供的一体化开发环境 (IDE),其不同版本针对开发者需求进行了优化。Visual Studio 2019 属于较早发布的商业版本之一,而 Visual Studio Community 2022 则是最新社区版的一部分。 - **Visual Studio 2019**: 这是一个全面的企业级 IDE,适用于各种规模的项目和团队合作场景[^4]。 - **Visual Studio Community 2022**: 它属于免费开源系列中的成员,专为个人学习以及小型非商用项目设计[^3]。 #### 主要功能对比 | 功能模块 | Visual Studio 2019 | Visual Studio Community 2022 | |-----------------------|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| | **目标用户群体** | 面向专业开发者、企业客户及其复杂应用构建需求 | 针对个体开发者和个人教育用途 | | **跨平台支持能力** | 能够处理 Windows 平台上的桌面应用程序、Web 应用和服务端部署 | 同样具备良好地支持多操作系统下的软件编写,不过某些高级特性可能有所限制 | | **性能表现提升措施** | 包含多项改进来加速大型解决方案加载速度并改善整体用户体验 | 新增了64位进程架构以更好地利用现代硬件资源 | | **集成服务范围广度** | 内建更多连接云端服务平台的能力 | 对应基础级别的云操作已足够胜任 | #### 编程语言兼容性分析 两者均能很好地适配主流编程语句集合: - 如 C#, VB.NET, Python 等流行选项均可在这两个平台上找到相应工具集的支持; - 不过值得注意的是,在特定领域如游戏引擎 Unity 中使用的脚本制作方面,Community Edition 可能满足基本要求却未必涵盖全部插件接口访问权限[^2]. #### 插件生态系统比较 尽管二者都可以通过 Marketplace 获取第三方扩展组件来自定义工作流程, 但相较于前者而言后者更加鼓励开放式的贡献模式从而形成了更为活跃繁荣的社群氛围[^4]: ```json { "name": "Example Extension", "description": "An example of how extensions can enhance both environments.", "version": "1.0.0" } ``` #### 总结评价 对于追求极致生产力或者需要频繁切换不同类型项目的资深工程师来说,付费订阅制下的旗舰产品无疑提供了无可比拟的优势;而对于初学者或者是预算有限的小型创业公司,则完全可以依靠官方慷慨提供的免费版本完成绝大多数日常任务[^3][^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值