获取"无法打开包含文件:'atlbase.h':没有此类文件或目录"错误

dum*_*dad 21 c++ atl include-path visual-studio-2013

我正在交换机器(在两台Windows 8.1笔记本电脑之间),刚刚从TFS加载了我正在处理的项目.在一台机器上它编译,另一台机器没有编译,并给出第一个错误

error C1083: Cannot open include file: 'atlbase.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)

在两台笔记本电脑上,我运行的是Visual Studio Ultimate 2013.在第一台笔记本电脑上,我检查了它的位置atlbase.h,它C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include来自于Visual Studio 2012安装目录.在新机器上,我没有安装Visual Studio 2012,因此该目录C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include不存在.

其他人有类似的问题(例如Ramilol的问题),因为他们使用的是Visual Studio Express.我正在使用Ultimate.

它可能是一个环境变量问题(由raj raj建议),但我的include目录路径VC++ Directories$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath)必需的.

我的一般问题是"我该如何解决这个问题?" 但是我也有兴趣知道我如何检查并设置$(VCInstallDir)的值,因为C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include它确实存在atlbase.h(所以我很困惑,为什么它没有被拾取).

==========编辑1:重写==========

让我再说一遍这个问题.

我已经将一个Visual Studio 2013项目加载到TFS的新构建笔记本电脑上.它不会构建并给出错误error C1083: Cannot open include file: 'atlbase.h': No such file or directory.该文件atlbase.h存在于新计算机的目录中C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include.

在我的项目属性中,我的包含目录路径VC++ Directories$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath)

如何检查这些宏的设置,以及它们不在哪里atlbase.h(即C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include)我该如何解决?

==========编辑2:安装了Microsoft Visual C++ Redistributables ==========

响应jp2code的答案,工作的机器和没有安装类似的Microsoft Visual C++ Redistributables数组的机器如下面的屏幕截图所示(工作机器在左侧):

MSVC++ RedistScreenshot

==========编辑3:环境变量==========

他的回答中,pje解释了如何查找环境变量.%VCInstallDir%正确设置为C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\但是如果我右键单击该行#include <atlbase.h>我会收到此错误,这表明尽管%VCInstallDir%是正确的,但这不是VS正在寻找的地方:

打开文件错误截图

==========编辑4:平台工具包设置==========

另一种可能性是Configuration Properties | General | Platform Toolset项目设置,由manuell在评论中提出,Michael Burr在他的回答中提出.对于项目,它设置为设置为,Visual Studio 2012 (v110)但下拉列表中列出的唯一其他选项是v110_wp80,选中后,将成为Windows Phone 8.0 (v110).如果我在记事本中手动编辑.vcxproj文件并在Visual Studio Ultimate 2013中重新打开项目,则属性页面现在将平台工具集列为Visual Studio 2013 (v120) (not installed).

如果我启动一个新的C++ Windows Store项目,我可以Visual Studio 2013 (v120)毫无问题地设置Platform Toolset ,实际上它是下拉列表中列出的唯一选项.(注意:新项目Target Platform Version设置为'Windows 8.1',它显示为灰色,因此我无法更改它,而失败的项目将其设置为Windows 8.)

==========编辑5:整个项目设置文件==========

在评论迈克尔建议"可能在某处发布.vcxproj(就像github上的要点)可能会有所帮助".我在这里贴了它.

==========编辑6:卸载并重新安装Visual Studio 2013 Ultimate ==========

没有效果,同样的错误再次出现.

Han*_*ant 9

在新机器上,我没有安装Visual Studio 2012

那么,不要再看了,这是你的问题.您的项目以VS2012工具集为目标,以构建在Windows 8.0上运行的Store项目.您仍然可以在VS2013中打开它,但只有安装了VS2012才能构建它.换句话说,您必须在机器上使用v110工具集.你没有.

在安装VS2012之后,您将不得不重新定位到8.1以使用VS2013工具集(v120)进行构建.右键单击"解决方案资源管理器"窗口中的"解决方案"节点,然后选择"将Windows应用商店项目重新定位到Windows 8.1".

对这款笔记本电脑感到烦恼,它对VS2012的记忆太多了.听起来它曾经安装过但没有正确卸载.


Geo*_*rge 5

可能的解决方案

  1. 获取进程监视器
  2. 筛选 atlbase.h

通过这种方式,您将确切知道 Visual Studio 正在寻找的位置atlbase.h。进程监视器将显示失败的文件打开尝试。

此时,您将能够通过以下方式解决问题

  1. 建立符号链接(混乱)
  2. 修复包含目录路径(更好)

更新 以下是过滤文件操作的方法:

过滤器设置

设置过滤器参数后不要忘记单击添加


pje*_*pje 5

如果要查看$(VCInstallDir)或任何其他Visual Studio宏的值,请打开VS2013的开发人员命令提示符(这应该与VS 2013安装一起安装).在提示符下键入:echo %VCInstallDir%.这将打印$(VCInstallDir)宏的当前值.如果要将其更改为其他目录,请键入set VCInstallDir=<directory path>,<directory path>所需目录的路径(可能C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include在您的情况下).

希望这会有所帮助,欢呼!

------编辑-------
作为旁注,有可能这些宏是用你试图加载和编译的2012年项目导入的.如果事实证明它是你的$(VCInstallDir)宏错了,那就解释了原因.


Mic*_*urr 5

检查"配置属性|常规|平台工具集"项目设置是否为:

Visual Studio 2013 (v12)
Run Code Online (Sandbox Code Playgroud)

而不是像"Visual Studio 2012(v110)"