我有C ++项目的传统MSVS解决方案。当我从版本控制系统中取出它并尝试第一次构建它时(当它干净时) - 我收到错误:无法找到LNK 1104库。
当我第二次尝试构建它时 - 一切都建好了。
项目" A" (C ++)依赖于作为Project" B"的库(lib文件)。 (也是C ++)。
" A"在其中一个cpp文件中有这样的代码(对于#pragma注释,stdafx.h可能更好吗?):
#pragma comment(lib, "B.lib")
导致第一次构建
的链接器错误我调查了第一个建成的结果:" B"项目已成功编译," lib"生成文件," A"项目(取决于" B")是解决方案项目构建顺序中的最后一个项目。
我想知道为什么" A"没有看到" B"图书馆第一次作为" B"应该早于" A"建造。当我第二次构建相同的解决方案时 - 没有链接器错误。
答案 0 :(得分:1)
右键单击项目A>项目依赖性
检查项目B
VS不会从代码中扣除依赖关系,您需要明确告诉它
答案 1 :(得分:1)
这与构建顺序有关。如果首先构建项目A,则B.lib
尚不存在。所以你得到了错误。然后构建项目B,并生成B.lib
。当你再次构建时,由于库存在,错误就消失了。
要解决此问题,您需要告诉A依赖于B的解决方案。右键单击解决方案,转到项目依赖项,在“项目”中选择A
并选中“{1}}”取决于上”。类似的东西: