c - 在 Visual Studio 2017 中的 errno 上收到链接错误 lnk2001

标签 c visual-studio linker

我有一些 C 代码在每个版本的 Visual Studio 中编译,直到我升级到 2017。出于某种原因,升级过程破坏了我的链接器引用,导致 HWND、SendMessage 等内容出现超过 400 个链接错误。

我艰难地浏览了链接器属性输入列表,并添加了 user32.lib、gdi32.lib 和其他一些文件来解决大多数丢失的外部符号错误,但无法摆脱最后两个错误。他们都在寻找 _errno,老 C 语言的人会将其识别为文件系统错误结果变量。我明确地将 libcmtd.lib 添加到我的链接器输入列表中,但仍然不高兴。

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

最佳答案

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

我的文件对 errno 进行了外部引用,只关心 errno 是否为零,所以我没有费心在文件中包含 errno.h。

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

VS2017 中的更改是有意义的,因此没有更早完成这一更改有点奇怪。

关于c - 在 Visual Studio 2017 中的 errno 上收到链接错误 lnk2001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47611322/

相关文章:

c# - 当在 Visual Studio 中调试并且你想要单步执行一个过程时

c - FreeType 库和 "Undefined reference to FT_Init_FreeType"

c - FreeMagic 和 GraphicsMagic 的链接问题

c++ - 在不存在的目录中打开文件 c 与 c++

C: 在终端窗口中按 "Enter"就像 EOF

c - 在 C/C++ 中使用 malloc 和 free 并收到错误 HEAP CORRUPTION DETECTED

以数组值作为条件的 for 循环的正确使用

visual-studio - 在 Visual Studio 中执行退格操作后的智能感知

.net - 是否可以在 .NetCore 应用程序中仅发布某些 appsettings.json

c++ - VC++ 中的函数级链接是否有任何负面影响?