targetver.h(8): fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory

换新公司了,接手新的工作环境,新建VS2015,编译工程时产生如标题的问题targetver.h(8): fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory,修改的方法按照此网站修改的,编译成功。

参照网站:https://blog.youkuaiyun.com/tianrolin/article/details/29208847

问题的原因:估计之前的员工安装了各种版本的VS

 机器同时安装了Visual Studio 2012和低版本(如VS2010),运行一段时间后会出现一个bug。新建或旧的Win32/MFC工程在编译时,编译器提示:fatal error C1083: 无法打开包括文件:“SDKDDKVer.h”: No such file or directory
    原因:出现这个bug的原因是VS2012中关于Windows SDK的路径宏定义和VS2010不同,而在某种情况下VS2010的配置串扰到了VS2012。VS2010中定义包含目录的宏为$(WindowsSdkDir)include,指向的目录是C:\Program Files (x86)\Windows Kits\8.0\Include。而搜索到SDKDDKVer.h文件在C:\Program Files(x86)\Windows Kits\8.0\Include\shared路径下。所以这里应更正为使用VS2012中新的宏定义$(WindowsSDK_IncludePath)。该宏包括了三个路径:
    C:\Program Files (x86)\Windows Kits\8.0\Include\um
    C:\Program Files (x86)\Windows Kits\8.0\Include\shared
    C:\Program Files (x86)\Windows Kits\8.0\Include\winrt
    类似还需要更改的是关于库目录的宏定义,VS2010下的$(WindowsSdkDir)lib指向为C:\Program Files (x86)\Windows Kits\8.0\Lib,需要更改为
    C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86
    那如何更改VS2012的配置环境,使得这个宏生效呢?

注:解决方法中涉及的文件夹AppData有时候默认时隐藏文件,查看隐藏文件

    解决方法:修改Visual Studio 2012的props配置文件。用记事本打开C:\Users\<me>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props,然后在<IncludePath>字段中添加$(WindowsSDK_IncludePath);再在<LibraryPath>字段中添加$(WindowsSDK_LibraryPath_x86);并保存。再去启动VS2012并编译工程就可以正常编译链接了。

 

 


原文:https://blog.youkuaiyun.com/tianrolin/article/details/29208847 

### 解决方案 当遇到 `Cannot open precompiled header file` 或者 `No such file or directory` 错误时,通常意味着编译器未能找到预编译头文件 `.pch`。这可能是由于多种原因引起的,包括但不限于项目设置不当、路径配置错误或预编译头文件确实丢失。 #### 方法一:禁用预编译头 对于某些项目而言,最简单的解决方案就是完全禁用预编译头功能: 1. 右键点击工程项目,在弹出菜单中选择 **属性** 2. 导航至 **C/C++ -> 预编译头 (Precompiled Headers)** 设置页面 3. 将选项更改为 **不使用预编译头 (/Yu)**[^3] 这种方法适用于不需要依赖于特定预编译环境的小型项目或是临时测试用途。 #### 方法二:重新生成预编译头文件 如果希望继续利用预编译技术来加速构建过程,则应尝试修复现有的`.pch`文件问题: 1. 清理整个解决方案(Solution),确保旧版本的中间产物被移除 2. 检查是否存在名为 `stdafx.h` 和对应的实现文件 `stdafx.cpp`,这两个文件负责定义哪些标准库会被提前处理成预编译形式[^2] 3. 如果上述两个文件缺失,请按照模板创建它们;否则确认其内容正确无误 4. 调整编译顺序,先单独编译含有预编译指令的标准前缀文件(`StdAfx.cpp`) 5. 再次运行完整的编译流程,此时应该会在指定输出目录下看到新产生的`.pch`文件 #### 方法三:验证工作区结构与路径变量 有时也会因为工作空间布局不合理或者是IDE内部维护的工作副本出现了异常而导致此类报错现象发生。因此建议核查以下几个方面的情况: - 工作区内各子模块之间的相对关系是否正常; - IDE所使用的全局/局部环境变量是否有变动影响到了资源定位逻辑; - 特定平台特有的约束条件是否得到了满足(比如64位模式下调用了仅支持32位的操作) 通过以上措施往往能够有效地解决问题,并恢复正常的开发状态。 ```cpp // stdafx.h 示例代码片段 #pragma once #include "targetver.h" #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers // Windows Header Files: #include <windows.h> ``` ```cpp // stdafx.cpp 示例代码片段 #include "stdafx.h" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值