新增项目链接错误导致构建解决方案失败

3

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

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

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

CommonLib.lib;UsermodeLibrary.lib

我得到的链接错误要么是:

错误 LNK1181:无法打开输入文件“CommonLib.lib” ProjectName

要么是:

错误 LNK1181:无法打开输入文件“UsermodeLibrary.lib” ProjectName

我将这些项目放在与其他项目相同的文件夹中,并且该解决方案使用筛选器。


你是否检查过链接器实际上是否搜索了.lib文件所在的目录?尝试将“附加依赖项”路径设置为库的绝对路径。如果这样可以工作,那么你指定的路径就是错误的,也就是说,你的.lib文件实际上不在项目的根文件夹中。 - nm_tp
此外,在VC++ Directories -> Library Directories中,你可以设置链接器搜索库的文件夹,据我所知。另外,请检查设置是否针对你实际尝试构建的配置进行了设置。 - nm_tp
谢谢你的建议!设置必须非常具体适用于新项目,因为我只在添加新项目时遇到错误,即使我将它们放在与其他类似项目完全相同的文件夹中。到目前为止,我已经使用文件比较工具检查了新项目和现有项目文件,并且它们都配置了完全相同的路径。我会检查你提到的第二个问题,但在提问之前,我确实比较了构建选项是否相同。 - Gy. Timi
每个项目都需要特定的配置。如果路径没有正确配置,它们可能包含一些特定的值,而不是使用的变量的值。 - nm_tp
1个回答

1
我的实验室老师为我解决了这个问题。为了回答这个问题,让我们把我从模板中添加的新项目称为“MyProject”。
“你必须进入解决方案的属性(右键单击解决方案->属性),在左侧选项卡中选择常规属性\项目依赖项。之后,在您的项目中间顶部选择(例如:MyProject),在底部窗口中,您必须搜索UsermodeLibrary并将其选中为项目的依赖项。”
问题在于每个项目都在项目属性(链接器相关和其他)中进行了正确配置,唯一的问题是当您正在构建解决方案时,它必须知道某些项目依赖于其他项目。这里的依赖关系层次结构如下:

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

这就是为什么您会看到CommonLib无法链接到该项目,因为它在这些应用程序之前没有被构建。
不知何故,您的模板在创建它们所在的解决方案时缺少此设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接