繁体   English   中英

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

[英]VS2013: LNK1104 error when linking with project in same solution

这可能是关于SO的更愚蠢的问题之一,但我无法解决。

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

A: $(SolutionDir)\$(PlatformName)\$(Configuration)\Lib\A.lib
B: $(SolutionDir)\$(PlatformName)\$(Configuration)\Lib\B.lib
C: $(SolutionDir)\$(PlatformName)\$(Configuration)\Bin\C.exe

由于内置在项目C中的exe期望A和B中的库,因此我将库A.lib和B.lib添加到项目C Properties-> Linker-> General-> Additional Dependencies中 我已经将A和B的目录位置添加到项目属性->链接器->常规->其他库目录中,完全与上面列出的相同。

链接时,出现链接器错误LNK1104:无法打开文件A.lib

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

非常感谢。

当您说您添加的目录完全与列出的目录相同时,是否也意味着文件名? 因为仅目录部分应该存在,即$(SolutionDir)\\$(PlatformName)\\$(Configuration)\\Lib

除此之外,您需要确保以正确的顺序构建项目。 MSBuild将很乐意尝试在AB之前(或与之并行)编译C 为此,请使用“ References属性页(在Project->Properties->Common Properties ),或使用“ Project Dependencies对话框( Project->Project Dependencies... )手动强制它。

我应该提到,使用项目引用机制是管理依赖项的“新方法”,也是推荐的方式-应该自动将引用项目的输出添加为引用项目的输入依赖项,而无需手动指定它们。 我自己过去并不能总是很幸运地能使这部分工作,但是它至少确实可以正确配置依赖项链。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM