VS2022 支持XP

Posted 福州-司马懿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2022 支持XP相关的知识,希望对你有一定的参考价值。

(null)不是有效的Win32应用程序

程序在古老的 32位 XP 系统下报错了 (null)不是有效的Win32应用程序

首先,检查 “解决方案配置” 是否设置为 Release + x86(编译成32位版本,是为了同时兼容32位和64位系统)

在 “控制面板” —> “程序和功能”,找到 Microsoft Virtual Studio Installer,右击选择 “修改”

然后选择 “单个组件”,搜索 XP,可以看到一条 “对 VS 2017(v141)工具的C++ Windows XP 支持 [已弃用]”,勾选并安装
在解决方案资源管理器中,对每个项目,右击属性,修改配置属性。常规 —> 平台工具集 —> Visual Studio 2017 - Window XP (v141_xp)

该版本相关的SDK与编译工具,也要一并安装

  • MFC可以说是套界面库,主要构建于Win32 API之上
  • ATL主要是为COM而生的,是一套模板库,开发COM组件很方便

Spectre 缓解的官方文档如下,如果禁用了就不需要安装
https://docs.microsoft.com/zh-cn/visualstudio/msbuild/errors/msb8040?view=vs-2019

C2706 语法错误:此处出现意外的"标识符"; 应为"类型说明符"


符合性改进介绍
https://docs.microsoft.com/zh-cn/cpp/overview/cpp-conformance-improvements?view=msvc-170&viewFallbackFrom=vs-2017

如果代码在之前版本没问题,升级之后报上面错误。需要右击,选择属性 —> 配置属性 C/C++ —> 语言 —> 符合模式 —> 改成"否",就OK了

/permissive-:启用所有严格标准符合性编译器选项,并禁用大部分特定于 Microsoft 的编译器扩展(但有一些例外,比如 __declspec(dllimport))。 在 Visual Studio 2017 15.5 版中此选项默认为开启状态。 /permissive- 符合性模式包括对两阶段名称查找的支持

C1010 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h””?


错误原因是:编译器在寻找预编译指示头文件(默认#include"pch.h")时,文件未预期结束。没有找到预编译指示信息的头文件 “pch.h”

因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #include "stdafx.h"预编译指示头,所以编译器在此cpp文件中一直到末尾都没有找到它

解决方案是,右键项目属性 —> 配置属性 —> C/C++ —> 预编译头 —> 将 “使用预编译头(/Yu)” 改成 “不使用预编译头”

无法打开包括文件


右键查看该项目的属性 —〉配置属性 —〉C/C++ ——〉常规 —〉附加包含目录

  • 工程根目录为:$(ProjectDir)
  • 其子目录inc为:$(ProjectDir)inc

获取设备唯一标识

wmic csproduct get uuid
wmic cpu get processorid
wmic diskdrive get serialnumber
wmic baseboard get version
wmic bios get Version
wmic bios get Manufacturer

以上是关于VS2022 支持XP的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS2017 中禁用“警告 MSB8051:不支持针对 Windows XP 的支持”?

如何在VS2012下静态构建Qt 4.8/5.2,使用静态MSVC运行时,支持Windows XP?

VS2012发布到XP平台

XP SP3 64 位上的 VS2010

敏捷方法比较:Scrum vs Kanban vs Lean vs XP

为啥我在c++里面的代码在vs2022里打不开?