C++ 使用Visual C+链接ODBCCP32.lib时的LNK1103+;2017年目标XP(v141_XP)处于调试模式

C++ 使用Visual C+链接ODBCCP32.lib时的LNK1103+;2017年目标XP(v141_XP)处于调试模式,c++,mfc,linker,odbc,visual-studio-2017,C++,Mfc,Linker,Odbc,Visual Studio 2017,尝试将最初在Visual Studio 2010中构建的程序升级到target 2017时,我在链接odbccp32.lib时收到LNK1103错误,表明: 调试信息损坏;重新编译模块 我已经包含了legacy_stdio_definitions.lib,它似乎是解决遗留静态库的符号问题所必需的,但是我仍然得到关于调试信息的错误 发布版本运行良好。事实证明,这实际上是Visual Studio 2017某些版本的编译器问题。版本15.3和15.4有这个问题,并且在非调试模式下缺少链接,我无法在这

尝试将最初在Visual Studio 2010中构建的程序升级到target 2017时,我在链接odbccp32.lib时收到LNK1103错误,表明:

调试信息损坏;重新编译模块

我已经包含了legacy_stdio_definitions.lib,它似乎是解决遗留静态库的符号问题所必需的,但是我仍然得到关于调试信息的错误


发布版本运行良好。

事实证明,这实际上是Visual Studio 2017某些版本的编译器问题。版本15.3和15.4有这个问题,并且在非调试模式下缺少链接,我无法在这些编译器版本中找到好的解决方案

但是,我确实发现了一个详细说明此问题的线程,当使用Visual Studio 2017版本15.3.x和15.4.x进行链接时,它显然会影响许多遗留库

根据MSFT在该线程中的工作人员的说法,该问题在15.5中得到了解决。从上面链接的线程:

朱永康【MSFT】·10月4日上午11:08 谢谢你的报告。该问题已在VS 2017更新5中修复

我可以通过安装当前的15.5预览版本并成功链接库来确认这一点


我添加了这个问题和答案,因为关于这个主题的现有搜索信息似乎非常差。

这不是一个充分的错误分析。问题是什么?你做了什么来诊断它?你得到了什么结果?有官方声明吗?很公平。回答更新了我的详细信息。由于这是一个内部链接器错误,所以我在试图克服它时所做的努力(除了在非调试模式下链接,这是有效的,我也提到过)很少是相关的。这样更好。但不幸的是,MSFT并没有提供有关缺陷本身的详细信息,是什么导致它浮出水面,以及哪些构建配置库受到影响。