【问题标题】:Error LNK1181: cannot open input file when compiling as .LIB错误 LNK1181:编译为 .LIB 时无法打开输入文件
【发布时间】:2013-07-10 22:17:30
【问题描述】:

我在这里有一个使用 Intel Composer XE 2013 的库,我想将它编译为 .lib,因为我将在另一个项目中使用它(它默认编译为应用程序/EXE)。但是,当我在 Visual Studio 2012 的配置管理器下的项目默认值下设置配置类型时,我得到“错误 LNK1181:无法打开输入文件”奇怪的部分是它查找的文件没有文件结尾。该项目包含 C、C++ 和 ASM 代码。有没有人遇到过这种行为?

【问题讨论】:

  • 您是否尝试从 64 位项目配置链接到 32 位库,反之亦然?
  • 我的设置是 x64,但当我编译为 EXE 或 LIB 时,配置都是 x86。我还没有提到我的项目,因为我什至还不能将它编译为 LIB。

标签: c++ c assembly visual-studio-2012 linker


【解决方案1】:

错误 LNK1181 的一些常见原因是:

  • 文件名被引用为对链接器的附加依赖项 行,但文件不存在。
  • /LIBPATH 语句指定包含文件名的目录 不见了。

要解决上述问题,请确保系统上存在链接器行中引用的所有文件。

使用 /LIBPATH 选项覆盖环境库路径。链接器将首先在该选项指定的路径中搜索,然后在 LIB 环境变量中指定的路径中搜索。您只能为输入的每个 /LIBPATH 选项指定一个目录。如果要指定多个目录,则必须指定多个 /LIBPATH 选项。然后链接器将按顺序搜索指定的目录。

在 Visual Studio 开发环境中设置此链接器选项

  1. 打开项目的“属性页”对话框。
  2. 单击链接器文件夹。
  3. 单击“常规”属性页。
  4. 修改 Additional Library Directories 属性。

如果这没有帮助,那么您可以查看这些链接:

【讨论】:

  • 由于某种原因,当我选择使用英特尔编译器时,项目属性下的链接器设置会消失:i.imgur.com/neag3ti.png
  • 这正是我的想法,但由于某种原因,我的链接器错误说:错误 LNK1181:无法打开输入文件 'C:\Users\my\long\project\path\Debug\MyLib. lib',即使我将其放入 C:\My\Include\Directory 并将其添加到附加库目录中。这太奇怪了。我关注了 Microsoft 的帮助页面:support.microsoft.com/kb/815645,但没有运气 - 我的目录路径中没有空间...
【解决方案2】:

我通过重命名不带文件扩展名的 .obj 文件解决了这个问题。例如,它正在寻找文件名“foo”,我有“foo.obj”,所以我将“foo.obj”重命名为“foo”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2017-03-18
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多