C++中找不到#include <atlbase.h>

51

当我在Visual Studio Express中编译我的C++程序时,它显示找不到atlbase.h。我是不是缺少某些SDK或其他东西?


5
正如Matteo所暗示的那样,ATL并未包含在Express版中。 - C. K. Young
2
ATL现在是构建工具的一部分。https://blogs.msdn.microsoft.com/vcblog/2016/03/31/announcing-the-official-release-of-the-visual-c-build-tools-2015/ - pronebird
@高维护 页面未找到。 - Stevoisiak
@StevenM.Vascellaro:它在 https://devblogs.microsoft.com/cppblog/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments/ 上,“MFC和ATL(在VS 2015 Update 3中添加)”。 - Roman R.
相关:在vs2017中进行MFC开发 - Stevoisiak
1
@StevenM.Vascellaro 请查看Wayback Machine https://web.archive.org/web/20190117225943/https://blogs.msdn.microsoft.com/vcblog/2016/03/31/announcing-the-official-release-of-the-visual-c-build-tools-2015/ - pronebird
10个回答

68

Visual Studio 2017

运行 Visual Studio 安装程序时,请选择个别组件选项卡,在 SDK、库和框架 下确保选择了Visual C++ ATL 支持VS Installer Visual C++ ATL Support selected


1
我按照上述步骤操作,但是它没有出现在路径中,所以我添加了它。对我来说,路径是:D:\Visual Studio 2017\VC\Tools\MSVC\14.11.25503\atlmfc\include。 - Colby Africa
1
在黄色高亮部分之间,还有一个“MFC和ATL支持(x86和x64)”的项目,可能也需要检查。 - Roman R.
1
在Visual Studio Community 2017中安装ATL并没有解决问题。这可能只适用于VS Professional。 - Stevoisiak
4
同样的内容也适用于VS 19,包括v141(VS 17)和v142(VS 19)工具链。 - jciloa
1
@StevoisiaksupportsMonica 这适用于 OP 的问题中提到的 Visual Studio 2017 Express。但这是不完整的。首先,您需要安装 Visual Studio 2017 BuildTools 并选择 Visual C++ ATL for x64。然后进入目录并将 C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\atlmfc 复制到 VSDExpress 文件夹 C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Tools\MSVC\14.16.27023。然后工具就可以找到源文件了。请参见 @pogosama 的答案。 - 1283822

40

2
我刚刚使用了这个解决方案。迄今为止最好的答案。不知何故,我不得不下载ISO,但是用Daemon Tools托管它并安装时没有任何问题。它不仅提供了头文件(atlbase.h)和库文件(例如atls.lib),我需要的下一个缺失的库文件是ws2_32.lib,它也包含在其中以及其他一大堆库文件。不要费心去找旧的SDK,你肯定不需要升级你的Express Visual Studio版本,尽管很多人一开始都会建议这样做。 - Cookie
1
我已经下载了这个驱动程序包,但是无法弄清楚如何在项目中指定atlbase.h的路径。我也在这里提出了一个问题。 - Bilal Haider

16

微软的 ATL (Active Template Library),其中包括头文件atlbase.h,已经随着Windows 2003 SDK一起发布,但它不在任何更新的 Windows SDK 版本中提供。它也与 Visual Studio 的专业版一起提供。


我应该下载这三个文件中的哪一个? - Ramilol
2
如果您正在运行 x86-64 CPU 上的 64 位 Windows,则使用 PSDK-amd64.exe。如果您在 Itanium 上运行 Windows,则使用 PSDK-ia64.exe。如果您正在运行 32 位 Windows,则使用 PSDK-x86.exe - wkl
3
好的,链接已经不存在了。这个链接似乎是有效的:[https://dev59.com/12865IYBdhLWcg3wR8ah#8990680]。 - Dr. belisarius

6

解决Visual Studio 2017 Express版的问题

我在使用Visual Studio 2017 Express版构建COM C++项目时遇到了相同的错误。正如这里的几位用户所提到的,Express版的Visual Studio不包括ATL支持。因此,要构建C++ COM/ATL项目,您至少需要使用Community版

如果您确实需要使用Express版,则可以下载并安装Visual Studio 2017 Build Tools。在安装过程中确保启用'Visual C++ ATL for x86 and x64'组件。

之后,在项目属性中添加其他VC++目录:

  • 包含目录:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\atlmfc\include
  • 库目录:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\atlmfc\lib\x86

现在,VC++编译器应该能够找到ATL源文件和库文件了。


5

如果您使用的是Visual Studio 2015,确保已安装C++公共工具(包含在VS安装程序中)。


4

更新Visual Studio Community 2022:

  1. 打开Visual Studio安装程序。

    你可以在开始菜单中搜索它。

  2. 修改已安装的版本。

enter image description here

搜索atl并安装。 如果您不确定版本,请前往安装目录进行检查。 例如,我的目录是14.33,所以我选择v14.33,如果有多个版本,请全部安装,或者您可以逐个尝试。 D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629

enter image description here


3

情况

我们安装了Visual Studio 2017 Community Edition中的“Visual C++ ATL支持”和MFC和ATL支持,但在我们的x64项目中仍然出现错误。

解决方案

我们使用以下两个命令修复了一些路径:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>mklink /d atlmfc "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib>mklink /d amd64 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib\x64

细节

我们最终在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\include 中找到了头文件 atlbase.h。这个路径并没有被添加到 VC 的 Include 目录中,因此在构建过程中无法找到该头文件。

vsvars32.bat 包含以下行:

@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%`.

在我们的机器上,这个路径解析为C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
我们创建了一个目录联接,以便构建工具可以在预期的目录中找到atlbase.h(这是上面“解决方案”部分中的第一条命令)。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>mklink /d atlmfc "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc"

之后,链接器找不到 atls.lib(请参见Cannot Open File atls.lib)。原因是预期的文件结构应该是lib直接包含x86版本的库文件,而lib\amd64应该包含x64版本。然而,实际上lib\x86包含了x86版本,lib\x64包含了64位版本。由于我们正在构建一个64位项目,创建另一个名为junk的目录并将它从amd64改名为x64解决了这个问题:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib>mklink /d amd64 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\lib\x64

这个方法在最新的Visual Studio更新中没有生效,因为ATL SDK更新到了14.14.26428版本,路径发生了变化。更新符号链接路径之后,它又可以工作了。 - Froggy

2

这个标题似乎是Windows平台SDK的一部分。

您应该在计算机上搜索该文件。这将告诉您是否缺少它。


它曾经包含在早期版本的Windows平台SDK中,但现在被(显然是有意地)从当前版本中省略了。 - jamesdlin
atlbase.h文件只能在社区版中找到,尝试从其他SDK下载是浪费时间,因为所有其他SDK链接都无法找到。这正确吗? - Jon marsh
对我来说,Visual Studio (2022) 的工具->'获取工具和功能' 就可以了。 - Epirocks

1
我曾经遇到过与示例项目相同的问题。 我指定了示例项目的属性,示例项目成功编译。
Visual Studio 8 头文件路径: C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include 库文件路径: C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib

1
我还没有看到有人提到Visual Studio 2015(MSBuild 14.0)。在这种情况下,我不得不下载Visual C++ BuildTools(在此处找到:https://visualstudio.microsoft.com/vs/older-downloads/)。安装后,再次运行安装程序允许我修改安装并包括ATL libs。
希望这对仍在使用MSBuild 14.0的人有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接