![](/img/trans.png)
[英]VS2013 C++ LINK : fatal error LNK1104: cannot open file 'mfc110ud.lib'
[英]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将很乐意尝试在A
和B
之前(或与之并行)编译C
为此,请使用“ References
属性页(在Project->Properties->Common Properties
),或使用“ Project Dependencies
对话框( Project->Project Dependencies...
)手动强制它。
我应该提到,使用项目引用机制是管理依赖项的“新方法”,也是推荐的方式-应该自动将引用项目的输出添加为引用项目的输入依赖项,而无需手动指定它们。 我自己过去并不能总是很幸运地能使这部分工作,但是它至少确实可以正确配置依赖项链。
为了完整起见,请注意,只有在已编译项目中实际包含任何符号时,才会生成.lib文件(因此,如果您的项目为空或没有定义任何符号,则编译该文件将不会生成.lib文件,从而破坏了构建所有相关项目)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.