3

我有带有 C++ 项目的旧版 MSVS 解决方案。当我从版本控制系统中获取它并第一次尝试构建它时(当它干净时) - 我收到错误:找不到 LNK 1104 库。

当我第二次尝试构建它时 - 一切都构建好了。

项目“A”(C++)依赖于项目“B”(也是 C++)的库(lib 文件)。

“A”在它的一个 cpp 文件中有类似的代码(可能 stdafx.h 是#pragma 注释的更好位置?):

#pragma comment(lib, "B.lib")

这会导致第一个构建的链接器错误

我调查了第一个构建结果:“B”项目编译成功,“lib”文件生成,“A”项目(取决于“B”)是解决方案项目构建顺序中的最后一个项目。

我想知道为什么“A”第一次没有看到“B”库,因为“B”应该比“A”更早构建。当我第二次构建相同的解决方案时 - 没有链接器错误。

4

2 回答 2

1

右键单击项目 A > 项目依赖项
检查项目 B

VS不会从代码中扣除依赖,需要明确告诉

于 2012-05-27T18:39:23.333 回答
1

这与构建顺序有关。如果项目 A 先构建,B.lib则尚不存在。所以你得到了错误。然后构建并B.lib生成项目 B。当您再次构建时,由于库存在,错误就消失了。

要解决这个问题,您需要告诉解决方案 A 依赖于 B。右键单击解决方案,转到项目依赖项,A在“项目”中选择并选中B“依赖于”。就像是:

在此处输入图像描述

于 2012-05-27T18:47:23.667 回答