【问题标题】:Build solution fails because of linker errors on newly added projects由于新添加项目的链接器错误,构建解决方案失败
【发布时间】:2018-11-22 10:14:51
【问题描述】:

我在 VS 2015 中有一个解决方案,它利用了多个类似的项目。 我从提供的模板中添加了两个新的,现在构建整个解决方案在这两个项目中显示两个链接器错误。

我已将配置与解决方案中的其他类似项目进行了比较,一切都完全相同。一个一个地构建项目是成功的。

在链接器属性-> 输入-> 附加依赖项我有以下库,这些库是从解决方案中的其他项目创建的:

CommonLib.lib;UsermodeLibrary.lib

我得到的链接器错误是:

错误 LNK1181 无法打开输入文件“CommonLib.lib”项目名称

或者:

错误 LNK1181 无法打开输入文件 'UsermodeLibrary.lib' 项目名称

我将项目和其他项目放在同一个文件夹中,解决方案使用了过滤器。

【问题讨论】:

  • 您是否检查过链接器实际上搜索了 .lib 文件所在的目录?暂时尝试将“附加依赖项”路径设置为库的绝对路径。如果可行,则您指定的路径是错误的,即您的 .lib 文件实际上不在项目的根文件夹中。
  • 另外,在 VC++ 目录 -> 库目录中,您可以设置链接器搜索库的文件夹,AFAIK。另外,检查是否为您实际尝试构建的配置设置了设置。
  • 感谢您的提示!这些设置必须非常特定于新项目,因为我只会在我添加的新项目上收到错误,即使我将它们与其他类似项目放在完全相同的文件夹中。到目前为止,我已经用文件 diff 检查了新的和现有的项目文件,它们配置了完全相同的路径。我会检查你提到的第二件事,但在提问之前我确实比较了即使构建选项也是相同的。
  • 每个项目都需要特定的配置。如果路径配置不正确,它们可能包含一些特定的值,而不是使用其值的变量。

标签: c visual-studio-2015 linker


【解决方案1】:

我的实验室老师帮我解决了这个问题。 为了回答起见,我们将我从模板“MyProject”添加的新项目称为。

“您必须转到解决方案的属性(右键单击解决方案 -> 属性),然后在左侧选项卡中转到 Common Properties\Project Dependencies。 之后,您在项目的中间顶部(例如:MyProject)和底部窗口中选择,您必须搜索 UsermodeLibrary 并检查/选择它作为项目的依赖项。

问题是每个项目都在项目属性中配置OK(链接器相关以及其余部分),唯一的问题是当您构建解决方案时必须知道每个解决方案某些项目依赖于其他项目。 这里的依赖层次如下:

MyProject -> UsermodeLibrary -> CommonLib(-> 表示“依赖于”)。

这就是您看到 CommonLib 无法链接到项目的原因,因为它不是在这些应用程序之前构建的。

不知何故,您的模板错过了与创建它们的解决方案有关的设置。"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多