我在Visual Studio 2013中使用标准Windows库的链接器时遇到问题。当我尝试构建C++项目时,我收到以下消息:
当我使用平台工具集v100:构建它时,出现了此错误消息
error LNK1123: failure during conversion to COFF: file invalid or corrupt C:SolutionsPatchManagementTrunkMainWindowsPatchMgmtAgentsTestLINK PatchMgmtAgentsTest
当我使用平台工具集v120:构建它时,出现了此错误消息
error LNK1104: cannot open file 'atlsd.lib' C:SolutionsPatchManagementTrunkMainWindowsPatchMgmtAgentsTestLINK PatchMgmtAgentsTest
早些时候,这个C++项目和同一解决方案中的其他C#项目是使用.NET 3.5在VS2008上编写的。现在它已迁移到VS2013和.NET 4.5.1。
此外,我有VS2008(其中是同一解决方案的旧版本,用于验证迁移)和VS2010,用于其他解决方案。我发现了一些解决方案或提示,第一条错误消息可能是由于.NET 4.0或更高版本,或者由于某些Visual Studio可变环境导致冲突而出现的。但是,我不能拒绝.NET 4.5.1。在我的情况下,如何修复第一条或第二条错误消息?
错误无法打开文件"atlsd.lib"可能是因为VS2013不再提供atlsd.ib,但您正在链接到使用旧版本的工具集(例如VS2012)构建的库,该工具集正在引入atlsd.lib.
解决方案:
-
棘手的部分是找出哪个库正在atlsd.lib中。我通过在msysgit安装中运行
grep
来回答这个问题,比如:grep atlsd*.lib
-
然后使用VS2013重建该库。