当我在 Visual Studio Express 中编译 C++ 程序时,它说找不到
atlbase.h
。我是否缺少一些 SDK 或者什么?
它包含在 Windows 驱动程序套件版本 7.1.0中。
Microsoft ATL(活动模板库),其中包含标头
atlbase.h
,包含在 Windows 2003 SDK 中,但不包含在任何较新的 Windows SDK 版本中。它还包含在 Visual Studio 专业版中。
Visual Studio 2017 Express 版解决方案
我在 Visual Studio 2017 Express 版本中构建 COM C++ 项目时遇到了同样的错误。正如此处的几位用户所提到的,Visual Studio Express 版本中不包含 ATL 支持。因此,要构建 C++ COM/ATL 项目,您至少需要 社区版。
如果您确实需要使用 Express 版本,可以下载并安装 Build Tools for Visual Studio 2017。确保在安装过程中启用“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 源文件和库文件。
对于 Visual Studio 2015 用户,请确保安装了 Common Tools for C++(VS 安装程序的一部分)。
在 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
我们最终在
atlbase.h
中找到了标题C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\atlmfc\include
。该路径根本没有被vsvars32.bat
添加到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
(参见无法打开文件atls.lib)。这是因为预期的文件结构是 lib
应直接包含 x86 版本的库,而 lib\amd64
应包含 x64 变体。相反,lib\x86
包含 x86 版本,lib\x64
包含 64 位版本。由于我们构建的是 64 位项目,因此从 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
该标头似乎是 Windows Platform SDK 的一部分。
您应该在计算机中搜索该文件。如果你错过了它,它会告诉你。
我在示例项目中遇到了同样的问题。我指定了示例项目的属性,并且示例项目编译成功。
Visual Studio 8
对于标题
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include
对于
.lib
文件C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib
我还没有看到有人提到 Visual Studio 2015 (MSBuild 14.0)。在这种情况下,我必须下载 Visual C++ BuildTools(可在此处找到:https://visualstudio.microsoft.com/vs/older-downloads/)。安装后,再次运行安装程序允许我修改安装并包含 ATL 库。
希望这对仍在使用 MSBuild 14.0 的任何人有所帮助