无法打开lib,除非我手动将其复制到我的项目中

问题描述 投票:0回答:2

当尝试从不同的驱动器导入外部库时,我不断收到错误 LNK1104“无法打开 foo.lib”

我在以下位置设置了正确的路径:

属性 -> 配置属性 -> VC++ 目录 -> 包含目录

属性 -> 配置属性 -> VC++ 目录 -> 库目录

属性 -> 配置属性 -> C/C++ -> 常规 -> 其他包含目录

属性 -> 配置属性 -> 链接器 -> 常规 -> 其他库目录

以及正确的 .lib 文件名,包括扩展名:

属性 -> 配置属性 -> 链接器 -> 输入 -> 其他依赖项

这仍然给我带来错误,我发现修复它的唯一方法是在我的项目中手动复制 .lib (或 .dll)文件,通过复制它,链接器可以找到它并正确链接它。

我在 SO 上发现的几乎所有问题都说要像我一样设置 .lib 的正确路径和文件名,为什么这不起作用,我必须直接将 .lib 文件复制到我的项目目录中才能使其工作?

c++ visual-studio visual-studio-2013 linker
2个回答
0
投票

根据Error LNK1104,据我所知,这个问题的原因是编译器无法搜索到.lib文件的目录。

要解决路径问题,我们应该验证 LIB 环境变量是否已设置,并且包含您构建的每个配置所使用的库的所有目录。在 IDE 中,LIB 变量由 VC++ 目录属性页 上的库目录属性设置。

如果静态库不是解决方案的一部分,在VC++Directories属性页中,我建议你应该尝试在LibraryPaths中添加.lib文件所在目录的路径。

欲了解更多详情,我建议您可以参考链接


0
投票

我遇到了类似的问题,一切都正确,但 Visual Studio 仍然无法打开 .lib

在文件资源管理器中使用我指定的路径到达正确的位置。我发现原因是目录/文件路径的最终长度。 [包括您使用的 $(ProjectDir) 扩展、/、.. 的所有内容,甚至最终的 .lib 名称也会影响长度]。

能够为我解决问题,可能下面的链接可以帮助

Visual Studio - 即使路径长度小于 260 个字符,也会出现 PathTooLongException

https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry

我还没有阅读所有内容或了解 Windows 的每个内部结构,但它解决了我当前的问题。考虑纠正我并根据要求进行更多研究。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.