找不到“windows.h”之谜

【C/C++】 Visual Studio2019找不到windows.h Visual Studio2019找不到windows.h1.背景2.原因分析3.解决办法3.1 windows10打开Visual Studio Installer3.2 修改3.3 单个组件中勾选windows10 sdk3.4 等待安装3.5 重启3.6 项目属性配置 1.背景 在windows10下通过IDE:Visual Studio2019社区版写C++代码的时候,出现警告提示:如下: 编译的时候报错:无法打开包括文件:“windows.h”: No such file or director 阅读详情

今天要运行一个简单的C++程序,如下:
//C++ code  让任务管理器的CPU使用产生一条正弦曲线图
#include <Windows.h>
#include "stdlib.h"
#include "math.h"
#include <stdio.h>

const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;
const int INTERVAL = 300;
int main(int argc, char* argv[])
{
 DWORD busySpan[COUNT];  //array of busy times
 long int idleSpan[COUNT];  //array of idle times
 int half = INTERVAL / 2;
 double radian = 0.0;
 for(int i = 0; i < COUNT; i++)
 {
  busySpan[i] = (long int)(half + (sin(PI * radian) * half));
  idleSpan[i] = INTERVAL - busySpan[i];
  radian += SPLIT;
 }

 long int startTime = 0;       
 int j = 0;
 while (true)
 {
  j = j % COUNT;
  startTime = GetTickCount();
  while ((GetTickCount() - startTime) <= busySpan[j]) ;
  Sleep(idleSpan[j]);
  j++;
 }
 return 0;
}
由于比较简单,就直接用editplus编辑成task.cpp文件,想在控制台中用cl.exe直接编译一下运行。
1、将cl.exe的path环境设置。
我安装的是VS2008 Team版。所出将“C:/Program Files/Microsoft Visual Studio 9.0/VC/bin”添加至PATH环境变量中。具体设置:我的电脑->属性->高级->环境变量,在出现的环境变量对话框中,选择path变量,编辑即可。
2、如果这时你运行cl task.cpp,会出现“没有找到mspdb80.dll”的错误,所出要同时将mspdb80.dll的路径加入path环境变量。路径为:“C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE”。
3、要在控制台中编译Win32程序,当然还得手动需设置include、lib环境变量(详细见http://blog.youkuaiyun.com/memory_xj/archive/2008/10/27/3156887.aspx),这很有点复杂,还好VS2008为我们将这些设置命令编成了vsvar32.bat文件,我们只需执行即可。
   在这里,我的噩梦来了。根据很多资料,包括著名的jjhou先生在《深入浅出MFC》中都指出应执行:C:/Program Files/Microsoft Visual Studio 9.0/VC/bin目录下的vsvars32.bat。如果程序中没有#include <windows.h>这一切是会很正常的。执行cl task.cpp出现了“fatal error C1034:windows.h:不包括路径集”的错误。从这里我就开始了很长一段时间的解决之路。
4、首先是搜索,看看这个windows.h究竟藏在什么地方。发现在“C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include”中有一个,但这个目录和VS2008有什么关系呢?先不管,在include环境变量中加入这个目录,再cl编译一下,唉,又出现在这个windows.h中include的另一个头文件找不到了。当时,我以为这个目录是SDK的一个目录,应该和VS2008没有任何关系,就不想在这上面花功夫了,后来发现是错了,其实VS2008中的$(WindowsSdkDir)环境变量就是对应这个目录。如果根据错误提示,在include环境变量中一直将所需的目录添加上的话,可能也会很快解决windows.h的问题。
5、接着,脑子里竟冒出重装VS2008的想法,不过很快否定了,VS2008太大了。必竟是在控制台中编译,是不是SDK的问题呢?以下是找到的资料和我自己的理解:
    SDK即software develope kit(软件开发工具包),它包含了进行Windows软件开发的文档和API函数的输入库、头文件(因为API在动态链接库中,这些动态链接库是系统的组成部分因此不用再提供,而输入库和头文件则必须,这样才能在你的程序中使用API函数)。早期SDK是一个单独发放的包,现在在Visual C++和其他一些开发环境中已经包含了它。尽管很多同道说,SDK和VC(VS2005、VS2008等)是两套系统,但我倾向于认为SDK之于VS2008就象JAVA中JDK之于eclipse等开发工具一样,是开发工具的基础,
    (1)什么是Windows SDK?
Windows SDK是用来支持32位和64位Windows平台以及.NET框架编程模型的开发包。Windows SDK这个名字从Windows Vista开始使用,它包含以前Platform SDK中的所有内容,同时包含.NET框架的内容。
    (2)什么是Platform SDK?
Platform SDK(也简写作PSDK)是在Windows Vista之前的Windows操作系统开发包。PSDK不包含任何.NET框架编程模型的内容。现在,Windows SDK已经取代了PSDK。PSDK不会再有更新版本发布,尽管一些PSDK仍然可以在微软的网站上下载到.
    (3)Windows SDK与Platform SDK的区别?
    Windows SDK已经取代了Platform SDK。Platform SDK已经结束它的历史使命,不会再有更新。你可能因为某些原因还是要去使用老的Platform SDK。比如,你还在使用VC 6进行开发,那你就要去用2003年2月份发布的Windows Server 2003 PSDK,这是最后一个对VC 6开发提供全面支持的SDK。
6、想着,我就准备下载一个SDK安装一下试试了。从http://download.youkuaiyun.com/source/724093网址下载SDK的安装工具,安装,自动下载SDK并安装,成功。
   安装目录为C:/Program Files/Microsoft Platform SDK,windows.h赫然就在include目录中,高兴,在inclue环境变量中加入C:/Program Files/Microsoft Platform SDK/Include/crt(是windows.h中一个包含文件所需),C:/Program Files/Microsoft Platform SDK/Include在SDK安装时,选择设置环境变量就已加入到include中了。如果这时,cl编译,还会出现一个某某lib打不开的错误(呵,记不住名称了),不要紧,还是用搜索大法,会发现好几个,不过Platform SDK中没有,倒是VS2008中有一个,就将这个目录加入到lib环境变量中吧。cl编译一下,成功了!!
   在控制台中的环境变量的查看,添加可以参考文章:http://blog.youkuaiyun.com/memory_xj/archive/2008/10/27/3157187.aspx
7、至此,用Platform SDK编译成功了。但是想想也不甘心哪,必竟VS2008这样强横的系统,在控制台中竟搞不定windows.h的包含,没有天理哪!脑袋灵光一闪,在VS2008 IDE中,新建一个控制台Win32解决方案,选择空文件(没有预编译等),在源文件中新建一CPP文件,将代码拷贝至文件中。为了保险起见,我将include、lib环境变量中属于Platform SDK的删除。再生成解决方案,没有出现找不到windows.h的问题,成功!说明,VS2008完全有能力搞惦的。问题可能出现在我不知道怎样设置环境上。
8、看VS的环境变量:工具->选项->项目和解决方案->VC目录设置->显示以下内容的目录(选包含文件)。有好几个路径目录,还有VS定义的环境变量,如$(WindowsSdkDir),这个环境变量指向哪儿呢?在运行->cmd命令->set命令,完全没有这个$(WindowsSdkDir)环境变量哪,在哪儿看呢?
9、$(WindowsSdkDir)环境变量的内容要在VS2008的控制台中看,(VS2008还有专有控制台?没听说过),找找吧。在工具菜单中有一个“Visual studio 2005 command prompt”,可能这是这个,点击运行,嘿,可真出现一个控制台,用SET命令,发现$(WindowsSdkDir)就是指向哪个“C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include”,等一等!!这个专用控制台在运行开始竟然执行了一个批处理文件,C:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/vsvars32.bat,在C:/Program Files/Microsoft Visual Studio 9.0/VC/bin不是也有一个vsvars32.bat。难道此bat非彼bat?
10、至此,心里明白离真相大白不远了。莫非是在cl编译执行C:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/目录中的vsvars32.bat。兴奋得小心抖抖,关掉VS2008 IDE,打开控制台,先执行C:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/vsvars32.bat,再cl task.cpp。WOW!OK!

   虽然,辛苦地转了一大圈,但真是学到很多,可知余心之欣慰!写一篇以兹纪念,呵呵!

windows.h头文件 WINDOWS.H是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。 立即下载

相关推荐

C++ Windows.h

C++ windows.h头文件,DevC++里的,如果哪位没有的,可以下载,0积分。 注意,DevC++里的。

windows.h

概述 Win32程序的开头都可看到: #include <windows.h> WINDOWS.H是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是: WINDEF.H 基本数据类型定义。 WINNT.H 支持Unicode的类型定义。 WINBASE.H Kernel(内核)函数。 WINUSER.H 用户界面函数。 WINGDI.H 图形设备接口函数。 这些头文件定义了Windows的所有资料型态、函数调用、资料结构和

我爱编程 2487

C++的文件 windows.h头文件

C++的文件 windows.h头文件

c++标准库windows.h文件

#include <winapifamily.h> /*++ BUILD Version: 0001 Increment this if a change has global effects Copyright (c) Microsoft Corporation. All rights reserved. Module Name: windows.h Abs...

被一个OIER遗弃的一堆烂代码 6881

windows.h 下载

main header file for the Win32 API windows.h Abstract: Master include file for Windows applications.

Windows头文件

该文件为Windows程序设计的头文件,文件中定义了在Win32程序设计中会使用到的宏,变量,结构体,API函数等等。

VS 2008 找不到“windows.h”之谜

<br /><br />解决方案一,<br />来源:http://blog.csdn.net/casablinca/archive/2008/10/30/3182184.aspx<br />1,找一个安装vs2008正常的32位XP系统, copy其安装目录下C:/Program Files/Microsoft SDKs/Windows/v6.0A/整个目录,覆盖问题电脑的相同目录;<br /><br />2,将路径 C:/Program Files/Microsoft SDKs/Windows/v6.0

Solidfish的专栏 2541

Windows_h头文件

Windows_h头文件,用于C++的windows程序开发.

QT找不到windows.h解决方法

搞C++大作业,github上扒了QT项目,跑的时候显示找不到windows.h,想着好久没用了,环境崩了,就去找解决方案。 恶心了我半天,本来以为是VS的问题,但是不是,最后还是环境变量的问题 网上全是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include这个解决方法,但是我的Microsoft SDKs下面没有Windows这个文件夹,吐了吐了, 解决方案, 加入环境变量 D:\Windows Kits\10\Include\10.0.1

starssgo的博客 1万+

windef.h && windows.h

2个头文件 windef.h 和 windows.h,做备份,npapi有用

SRAM compiler选项中 Soft Error Repair (SER)

引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中,

hzmscut的博客 1154

解决 Keil 中找不到 Windows.h 头文件的问题

在进行项目开发过程中,我们常常会遇到各种技术难题。最近,在因项目需要使用意法半导体 TOF 传感器 VL53L0X 并移植其 API 时,就遇到了一个问题 ——Keil 报错找不到 Windows.h 头文件。这一问题阻碍了开发的顺利进行,不过经过一番探索,最终找到了有效的解决办法,在此分享给大家,希望能帮助到同样遇到此问题的开发者们。

lty2787496776的博客 1783

李大勇matlab密码,基于MatlabSimulink的太阳能热水系统仿真研究 沈超.doc

基于MatlabSimulink的太阳能热水系统仿真研究 沈超中国工程热物理学会 工程热力学与能源利用 编号:141090基于Matlab/Simulink的太阳能热水系统仿真研究沈 超1 1 余 鹏1 李洪欣1 魏新利2郑州大学土木工程学院,郑州 450001郑州大学化工与能源学院,郑州 45...

weixin_42298437的博客 1340

vs2022报错头文件stdio.h找不到,以及找不到Windows SDK版本

通过作者自身的这次经历,希望各位读者引以为戒,产生莫名的错误解决起来费时费力,同时也希望对各位读者朋友有帮助!!!参考解决方法转载VS2019遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决-优快云博客VS2022解决找不到 Windows SDK问题(编译提示一堆无命令提示符错误)_missing any windows sdk-优快云博客。

qq_42806414的博客 3341

【技术解析】Point-NeRF:如何通过点云优化加速神经辐射场渲染

本文深入解析了Point-NeRF技术,它通过引入3D点云作为几何先验,有效解决了传统神经辐射场渲染速度慢的痛点。该方法利用神经点云构建局部辐射场,结合点剪枝与生长策略进行动态优化,在保证高渲染质量的同时,实现了高达30倍的训练加速,为高效3D场景重建提供了新范式。

weixin_29159127的博客 267

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4382

VS2008的项目出现错误“找不到windows.h”的解决办法

电脑上原本安装了VS2010,安装完成并且建项目一类的完全没有问题。 可后来又有点别的事要安装VS2008. 犹豫再三,还是先把VS2010给卸载了 貌似卸载的不干净,VS2008第一次安装失败。不想再重新安装,就直接选择了修复。 新建项目"win32 Application",提示找不到windows.h。 再修复,再新建,问题依旧。   在网上查了一些资料,

eddy_liu的专栏 1658

【AUTOSAR-DEM】-2.1-APP SWC设置UDS/OBD DTC检出和恢复

点击返回「《Autosar_BSW高阶配置》总目录」 案例背景(共6页精讲): DEM模块提供两种不同类型的Event: • BSW-related events:DEM_EVENT_KIND_BSW(通过C-API报告 - Dem_SetEventStatus) • SW-C-related events:DEM_EVENT_KIND_SWC(通过RTE operation - SetEventStatus) 下面我们讲讲在APP SWC中设置BusOff(总线关闭) DTC故障成立/恢复(其它

「汽车电子助手」的博客 3944

找不到windows.h源文件

找不到源文件window.h 解决方案:         右侧解决方案,选择项目-&gt;右键-&gt;属性-&gt;常规里面Windows SDK版本改成当前系统的SDK版本

lwjzjw的博客 4666

《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)

《C++面向对象程序设计》✍千处细节、万字总结 文章目录《C++面向对象程序设计》✍千处细节、万字总结一、面向对象程序设计二、C++基础2.1 C++的产生和特点2.2 一个简单的C++示例程序2.3 C++在非面向对象方面对C语言的扩充输入和输出cinconst修饰符void型指针内联函数带有默认参数值的函数函数重载作用域标识符"::"强制类型转换new和delete运算符引用三、类和对象(一)3.1 类的构成3.2 成员函数的定义3.3 对象的定义和使用3.4 构造函数与析构函数构造函数成员初始化列表

像写诗一样优雅地写代码~ 78万+

Vue3 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue3,nuxt3,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue3西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,自定义播放器样式,截屏,监控视频,vue3使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,

🏆 前端领域优质创作者 1万+

VS2019/2022提示找不到stdio.h 找不到windows kit

以上两个问题是同一类问题 VS2019/2022提示找不到stdio.h时,一般的情况下是已经安装了C++工具集,除此之外,还需要安装一个额外的windows kit才能运行。 解决时需要下载一个新的windows kit 注意到此图是可以修改安装路径的,如果你可以修改路径的话安装上新版本windows kit就可以使用了。 如果你不能修改安装路径很有可能是电脑之前安装了老版本的windows kit 则卸载老版本时可能会删除不干净,除了常规卸载外,注册表方面可能需要手工卸载 注册表打开 计算机\HKEY

slc1112的博客 1万+

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 377
上一篇: 命令行对编译环境设置及系统环境变量一览
下一篇: 水晶报表函数大全--数字函数篇
memory_xj
博客等级 码龄24年 44粉丝 23原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值