VS2013: LNK1104错误时,与项目在同一解决方案链接

VS2013: LNK1104 error when linking with project in same solution

本文关键字:解决方案 链接 项目 LNK1104 错误 VS2013      更新时间:2023-10-16

这可能是SO上最愚蠢的问题之一,但是我解决不了。

我有一个包含三个项目a, B和C的解决方案。a和B是静态库项目,C是一个与a和B链接的exe项目。我已经设置了构建目录,以便每个项目的构建工件位于如下:

A: $(SolutionDir)$(PlatformName)$(Configuration)LibA.lib
B: $(SolutionDir)$(PlatformName)$(Configuration)LibB.lib
C: $(SolutionDir)$(PlatformName)$(Configuration)BinC.exe

由于项目C中内置的exe期望A和B中的库,我已将库A.lib和B.lib添加到项目C Properties->Linker->General->Additional Dependencies。我已经将A和B的目录位置完全按照上面列出的添加到Project Properties->Linker->General->Additional Libraries Directories.

链接时,我得到链接器错误LNK1104:无法打开a.b lib文件

有人能帮忙吗?我有一些使用VS的经验,但这是我第一次从头开始构建一个多项目解决方案。

许多谢谢。

当您说您已经完全按照列表添加了目录时,您是指文件名也添加了目录吗?因为只有目录部分应该存在,即$(SolutionDir)$(PlatformName)$(Configuration)Lib

除此之外,您需要确保项目实际上是按照正确的顺序构建的。MSBuild将愉快地尝试在AB之前(或并行)编译C。要做到这一点,要么使用References属性页(在Project->Properties->Common Properties下),要么使用Project Dependencies对话框(Project->Project Dependencies...)手动强制它。

我应该提到,使用项目引用机制是管理依赖关系的"新"和推荐的方法——它应该自动添加被引用项目的输出作为引用项目的输入依赖,而不必手动指定它们。在过去,我自己并不总是很幸运地让这部分工作,但它确实至少正确地配置了依赖链。

为了完整起见,请注意,只有在编译的项目中实际包含任何符号时才会生成.lib文件(因此,如果您的项目为空或没有定义符号,编译它将不会生成.lib文件,从而破坏所有依赖项目的构建)。