我的硬盘中有 atls.lib,但我无法将它链接到我的 Visual Studio 项目中。我知道 atls.lib 是 ATL 特定的库文件,并且我拥有所有 ATL 文件/头文件/库。但是,我仍然无法链接它们。
链接:致命错误 LNK1104:无法打开文件“atls.lib”
谁能帮助一个无助的程序员?
非常感谢。
我的硬盘中有 atls.lib,但我无法将它链接到我的 Visual Studio 项目中。我知道 atls.lib 是 ATL 特定的库文件,并且我拥有所有 ATL 文件/头文件/库。但是,我仍然无法链接它们。
链接:致命错误 LNK1104:无法打开文件“atls.lib”
谁能帮助一个无助的程序员?
非常感谢。
在我的情况下,问题是缺少 x64 的 ATL/MFC 库,我必须在 Visual Studio 安装程序中添加它们(这是一个开源项目,所以我不知道这个要求)。
再一次,无价的procmon完成了这项工作:
虽然在链接器下找到了atls.lib$(VCInstallDir)atlmfc\lib
,但在$(VCInstallDir)atlmfc\lib\amd64
.
为了更新这个问题,我在运行安装 Spectre(VC++ 规范代码缓解工具)后遇到了这个错误。查看 VC++ 目录后,我注意到 Include Directories 和 Library Directories 都已更改为在路径中添加了“Spectre”,而实际文件的原始路径不再存在。在确定 Spectre 是否未正确安装,或者只是更改路径即可解决问题后,我将在稍后更新此内容;我不希望在我的代码中暴露投机攻击,这显然发生在 ATL 代码中。
编辑
我的编译器是 VS 2017 社区版。
编辑
对我有用的解决方案在这里,由 Holger Schmeken 发现
好像还没有添加库目录。在项目属性、链接器、常规选项中,将atls.lib
驻留的目录添加到该Additional Library Directories
字段。
通过 Visual Studio 安装程序安装以下单个组件,为我使用 VS2019 运行 32 位驱动程序修复:
我添加<Visual Studio folder\VC\Tools\MSVC\14.15.26726\atlmfc\lib\x64\atls.lib>
到Linker>Input> Additional Dependencies
解决方案属性中,它得到了解决。
我只需将此文件复制到我的项目文件夹即可解决此问题。
在我获得最近的 VS2019 更新后,这个问题开始发生在我身上。我注意到这是因为 Spectre Mitigation 已自动启用,但我没有库的 Spectre Mitigation 版本。
安装 Spectre 缓解版本或禁用 Spectre 缓解都是可能的修复。