问题描述:
有一个动态库imageFactory,之前该库依赖了另外两个动态库imageBasic和algorithmFactory,
后来我将imageBasic中的函数全部整理到了algorithmFactory中,从而动态库imageFactory只依赖了algorithmFactory,
并且我也在imageFactory的代码以及属性页面中进行了合理的库依赖调整;
在x64环境中,imageFactory可以顺利编译并链接,但在win32中,imageFactory编译时提示error LNK1181,无法找到imageBasic.lib。
问题解决:
1 反复检查imageFactory项目链接依赖设置,没有发现关于imageBasic.lib的链接;
2 查看imageFactory.vcxproj文件,发现如下设置:
</ProjectReference>
<ProjectReference Include="..\imageBasic\imageBasic.vcxproj">
<Project>{e856f5a3-c243-45cc-953d-46655f40e8b0}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
以上设置是合并库前产生的,具体含义没有详细理解,我猜测imageFactory项目是否继承了imageBasic项目中的某些依赖(虽然imageBasic不应该依赖自己),
于是我将imageFactory项目同目录下的历史项目文件夹imageBasic重命名为imageBasic_,再次编译imageFactory可正确连接!
3 我发现在x64中,mageFactory.vcxproj文件也有如下设置:
</ProjectReference>
<ProjectReference Include="..\imageBasic\imageBasic.vcxproj">
<Project>{e856f5a3-c243-45cc-953d-46655f40e8b0}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
且存在历史遗留文件夹imageBasic, 但不存在链接问题!