C++。错误 LNK1104。第一次打不开库文件 解决办法建了

标签 c++ visual-studio linker

我有 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”构建。当我第二次构建相同的解决方案时 - 没有链接器错误。

最佳答案

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

要解决这个问题,你需要告诉解决方案A依赖于B。右键单击解决方案,转到项目依赖项,在“项目”中选择A并勾选B 在“取决于”中。像这样的东西:

enter image description here

关于C++。错误 LNK1104。第一次打不开库文件 解决办法建了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776290/

相关文章:

c++ - std::remove_if 使用其他类方法

c++ - dll 会变成机器代码吗?

c - ns_initparse 的链接器错误

c++ - CMake 库链接不正确

c++ - gcc 链接器找不到库

c++ - 类的动态分配数组

c++ - 长数组缓存问题

.net - XML注释intellisense中的RTL注释以相反的顺序显示单词

c++ - boost asio 错误类别为空

c# - Visual Studio 2017 快速操作灯泡图标与新 Screwdriver 图标