【发布时间】:2013-12-29 20:03:36
【问题描述】:
我正在交换机器(在两台 Windows 8.1 笔记本电脑之间)并且刚刚从 TFS 加载了我正在处理的项目。在一台机器上它编译,在另一台机器上它没有并给出第一个错误
error C1083: Cannot open include file: 'atlbase.h': No such file or directory
在两台笔记本电脑上,我都运行 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's question),因为他们使用的是 Visual Studio Express。我正在使用 Ultimate。
这可能是环境变量问题(如suggested by raj raj),但我在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:重新措辞 ==========
让我再尝试一下这个问题的措辞。
我已从 TFS 将 Visual Studio 2013 项目加载到新构建的笔记本电脑上。它不会构建并给出像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's answer 工作的机器和没有安装类似 Microsoft Visual C++ Redistributables 阵列的机器,如下图所示(工作机器在左侧):
========== 编辑 3:环境变量 ==========
在his answer, pje 中解释了如何查找环境变量。 %VCInstallDir% 正确设置为 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ 但是如果我右键单击行 #include <atlbase.h> 我会收到此错误,这表明尽管 %VCInstallDir% 是正确的,但这不是 VS 正在寻找的地方:
========== 编辑 4:平台工具包设置 ==========
另一种可能性是 Configuration Properties | General | Platform Toolset 项目设置,由 manuell 在 cmets 和 Michael Burr in his answer 中提出。对于该项目,它设置为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 项目,我可以毫无问题地将 Platform Toolset 设置为 Visual Studio 2013 (v120),事实上它是下拉列表中列出的唯一选项。 (注意,新项目将 Target Platform Version 设置为“Windows 8.1”,它是灰色的,所以我无法更改它,而失败的项目将其设置为 Windows 8。)
========== 编辑5:整个项目设置文件==========
在 cmets Michael 中建议“也许将 .vcxproj 发布在某处(如 github 上的要点)可能会有所帮助”。我已经发布了here。
========== 编辑 6:卸载并重新安装 Visual Studio 2013 Ultimate ==========
没有效果,同样的错误再次出现。
【问题讨论】:
-
在这些机器上安装 VS2013 是一团糟。通常是由于它们具有早期版本(例如预览版或试用版),并且没有正确卸载它们。所以安装程序会随机跳过步骤,因为注册表中有一个已经存在的子包的内存。很难修复。
-
这是一个全新的版本 - 没有旧版本
-
ATL 与 Visual Studio 一起安装。如果您在寻找它们的 dfirectory 中没有 ATL 文件,那么也许您在安装 VS 时未选中相应的框...我想您需要去那里并通过安装程序进行修复,因为没有其他获取 ATL 的方法,而不是 [a more] 完整的 VS 安装。
-
正如我在问题中所说,我在
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include中确实有 ATL 文件,这正是人们所期望的。但这不是 Visual Studio 正在寻找它们的地方。我怀疑它正在寻找第二台机器上不存在的C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include,因为我在那台机器上只安装了 Visual Studio 2013。 -
常规属性中“平台工具集”的值是多少?
标签: c++ visual-studio-2013 atl include-path