VS2013:链接器冲突



我在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.

解决方案:

  1. 棘手的部分是找出哪个库正在atlsd.lib中。我通过在msysgit安装中运行grep来回答这个问题,比如:

    grep atlsd*.lib

  2. 然后使用VS2013重建该库。

最新更新