【问题标题】:Cannot open lib unless I manually copy it in my project除非我在我的项目中手动复制它,否则无法打开 lib
【发布时间】:2020-02-29 16:25:31
【问题描述】:

尝试从其他驱动器导入外部库时,我不断收到错误 LNK1104 "cannot open foo.lib"

我设置了正确的路径:

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

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

属性 -> 配置属性 -> C/C++ -> 常规 -> 附加包含目录

属性 -> 配置属性 -> 链接器 -> 常规 -> 附加库目录

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

属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项

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

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

【问题讨论】:

  • 我设置了正确的路径 你的编译器告诉你你没有设置正确的路径。路径中有空格吗?
  • @drescherjm 没有空间,我已经检查了 10 次,尝试使用相对路径和绝对路径,手动编写路径并使用 VS 文件夹资源管理器
  • 您在Additional Include Directories 中添加的条目之前的其他路径之一可能不正确。
  • 我假设您没有混合使用 32 位和 64 位,并且您使用的 .lib 与您复制的文件相同,因此它绝对没有损坏。
  • @drescherjm 我再次检查了所有路径,但它们是正确的,我没有混合 32 位和 64 位(我只使用 64 位),我复制的库是文件夹中的我在属性中写的路径。这也是一个静态库,我不知道这是否有帮助,因为我也需要对动态库做同样的事情。

标签: c++ visual-studio visual-studio-2013 linker


【解决方案1】:

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

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

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

更多详情,我建议你可以参考link

【讨论】:

  • 是的,这就是我不明白的地方,到处都说要执行我已完成的步骤,它会起作用,但对我不起作用。我确定 .lib 没有损坏或类似的东西,因为我复制了我试图在我的项目文件夹中指向的同一个文件并且它可以工作,我很确定路径是正确的,因为我使用了 VS 资源管理器找到它们,我检查它们的次数比舒服的多。就像我的 VS 忽略了我选择的 Library Directories 值。但是它确实适用于 .h 文件,是否有隐藏在某处的选项会覆盖/忽略库路径?
  • 尝试将代码添加到您的源文件中:"#pragma comment(lib, "foo.lib")"
  • 好吧,我真的很困惑。我将编译指示放入,运行程序但忘记从我的项目文件夹中删除 .lib 所以我不确定它是否找到它,因为它像以前一样在文件夹中,或者由于编译指示,我删除了 .lib从我的文件夹中,它工作。一切都好,然后我删除了编译指示,现在我的链接器正在正确链接文件......我不明白,我没有更改项目配置中的任何内容
  • #pragma comment(lib, libname) 告诉链接器将“libname”库添加到库依赖项列表中,就像您在 Linker->Input-> 的项目属性中添加它一样附加依赖项。链接器首先在当前工作目录中搜索,然后在 LIB 环境变量中指定的路径中搜索。有关更多详细信息,您可以参考link
  • 好的,但是为什么即使在删除 #pragma 之后它现在仍然有效?此外,这不应该是必需的,因为文档说它与将库的路径放在 Linker->Input->additional dependencies 中就像我已经做过但没有工作一样。只是想了解发生了什么,以防我在以后的项目中发现同样的错误
猜你喜欢
  • 2015-02-10
  • 2016-02-23
  • 2015-08-21
  • 2013-11-02
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 2021-09-26
  • 2019-02-12
相关资源
最近更新 更多