关闭

无法打开包括文件:“SDKDDKVer.h”: No such file or directory

1301人阅读 评论(0) 收藏 举报
分类:

在已经装有Visual Studio 2010的系统中,同时安装Visual Studio 2012,安装过程很顺利,但到使用VS2012时,却出问题了。

本文主要介绍:VS中新建工程编译时出现,“无法打开包括文件:“SDKDDKVer.h”:  No such file or directory”问题的解决方法。
一 原因
相关解释见:
http://blog.csdn.net/tianrolin/article/details/29208847

博文主要介绍了VS2012中出现该问题的解决方法,VS2010中解决方法类似。
二 解决方法
VS2010VS2012包括文件和库文件的宏定义如下:
VS2010:
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
$(WindowsSdkDir)include

$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
$(WindowsSdkDir)lib

VS2012:
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
$(WindowsSDK_IncludePath)

$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
$(WindowsSDK_LibraryPath_x86)

记事本打开:
“C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props”
(AppData是隐藏文件夹,可以把“C:\Users\Administrator\AppData”复制到文件对话框路径窗口,回车打开,也可以复制到在“开始”搜索中,回车打开)
1. 如果VS2010中出现该问题,在<IncludePath>字段中添加$(WindowsSdkDir)include,在<LibraryPath>字段中添加$(WindowsSdkDir)lib
2.如果VS2012中遇到该问题,在<IncludePath>字段中添加$(WindowsSDK_IncludePath),在<LibraryPath>字段中添加$(WindowsSDK_LibraryPath_x86)
三“转换到  COFF 期间失败: 文件无效或损坏”问题解决
VS安装目录下搜索cvtres.exe,如果安装多个VS会搜索到不止一个cvtres.exe,如果VS2010中出现该问题,可以把VS2012中的cvtres.exe替换VS2010目录下的cvtres.exe,VS2012出现问题用VS2010中的cvtres.exe替换。
VS2010目录:

C:\Program  Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

VS2012目录:
C:\Program  Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe

四 VS2012 " fatal error C1083: 无法打开包括文件:"stdio.h": No such file or directory"
原因:安装过程出现问题,安装目录VC文件夹下的include文件和lib文件,缺少.h和.lib 文件
解决:找到安装目录,默认为:C:\Program Files\Microsoft Visual Studio 11.0\VC
再找一个安装正确的目录,同样找到其安装目录下的VC文件夹,用VC文件夹中的include和lib文件夹,替代自己VC下的include和lib文件夹。1、当保持项目为2010版本(即打开2010的项目,并且不选择更新为2012项目)编译项目时,发生下述链接错误:



 

LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏。

这是因为与VS 2010配套的cvtres.exe文件版本不正确引起的。使用下面链接中的版本替换Program Files\Microsoft Visual Studio 10.0\VC\bin路径下的同名文件。

http://download.csdn.net/detail/delbboy/4534577

估计是安装VS 2012时,更新了系统中的相关组件,导致VS 2010原有的cvtres.exe失效,如果安装有VS 2010 SP1,则不会出现这个问题,应该是SP1与VS 2012所做的更新兼容。

 

2、编译VC++项目时,发生下述编译错误:

C1083: 无法打开包括文件:“SDKDDKVer.h”: No such file or directory.

这是因为VS 2012与VS 2010有着不同的Include和Library目录结构,而VS 2012继承了VS 2010的Include和Library搜索目录设置(真不知道M$在想什么),因此编译时找不到相应包含文件和库文件。

解决办法是在头文件的搜索目录中添加$(WindowsSDK_IncludePath);,同时在库文件的搜索目录中添加$(WindowsSDK_LibraryPath_x86); 或 $(WindowsSDK_LibraryPath_x64);,32位系统选择前者,64位系统选择后者。

目前已成功在同一系统中同时使用VS2012、VS2010和VS2008 (VS2010和VS2008都用一阵子,懒得卸载了)。本机安装了两个版本的VS就可能会出现这个编译错误, 比如我机器上同时装了VS2012和VS2008.




 

VS2012中关于Windows SDK的路径宏定义和VS2008不同,而在某种情况下VS2008的配置串扰到了VS2012.

VS2012继承了VS2008的Include和Library搜索目录设置,,因此编译时找不到相应包含文件和库文件。

解决办法, 在VS2012的头文件的搜索目录中添加$(WindowsSDK_IncludePath);,同时在库文件的搜索目录中添加$(WindowsSDK_LibraryPath_x86);(WindowsSDK_LibraryPath_x64);



可以试试在 INCLUDE 目录增加:$(WindowsSDK_IncludePath)
在 LIB 目录增加:$(WindowsSDK_LibraryPath_x86)
如果是ARM平台或X64平台,用这两个宏:$(WindowsSDK_LibraryPath_arm) 、$(WindowsSDK_LibraryPath_x64)。
以上修改之后应该就可以解决。

出现问题的原因应该是,之前安装了VS10或之前版本的IDE。IDE之间的路径设置共享,但是确有冲突。
SDK7.1 的INCLUDE 路径默认是:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
SDK8.1 的 INCLUDE 路径默认是:C:\Program Files (x86)\Windows Kits\8.1\Include\um
在结尾多了个 um


C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\winsdkver.h
 

/*
 
Copyright (c) Microsoft Corporation. All rights reserved.
 
Module Name:
 
    WinSDKVer.h
 
Abstract:
 
    Master include file for versioning content that ships in the Windows SDK.
 
*/
 
#ifndef _INC_WINSDKVER
#define _INC_WINSDKVER
 
#pragma once
 
// This list contains the highest version constants supported by content in the Windows SDK.
 
#define _WIN32_MAXVER           0x0601
#define _WIN32_WINDOWS_MAXVER   0x0601
#define NTDDI_MAXVER            0x0601
#define _WIN32_IE_MAXVER        0x0800
#define _WIN32_WINNT_MAXVER     0x0601
#define WINVER_MAXVER           0x0601
 

 

#endif
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:74005次
    • 积分:1864
    • 等级:
    • 排名:千里之外
    • 原创:96篇
    • 转载:107篇
    • 译文:1篇
    • 评论:9条
    最新评论