2017-12-02 225 views
0

我有一些C代码在Visual Studio的每个版本中编译,直到我升级到2017年。出于某种原因,升级过程打破了导致超过400个链接的链接器引用错误的东西,如HWND,SendMessage等在Visual Studio 2017中获取errno上的链接错误lnk2001

我通过链接器属性输入列表淹没,并添加user32.lib,gdi32.lib和其他一些解决大多数缺失的外部符号错误,但无法摆脱最后2个错误。他们两个都在寻找_errno哪些老C人员会认为是文件系统错误结果变量。我明确地将libcmtd.lib添加到我的链接器输入列表中,但仍然没有快乐。

如何解决VS2017中最后一个链接错误?

+0

根据项目的复杂程度,我会考虑重新创建它,而不是试图修复参考。 – SoronelHaetir

回答

0

答案原来是VS2017改变了errno.h文件来声明errno。在过去的Visual Studio实现中,errno.h只是errno各种返回值的定义列表。在VS2017中,errno.h有条件地声明了errno。

如果errno为零或没有,我的文件只是关心errno的外部引用,所以我没有打扰在文件中包含errno.h。

所需要的只是将errno.h包含在对errno进行外部引用的文件中。

VS2017的变化很有道理,所以它有点奇怪,它没有做得太早。