VS-2019的编译错误

时间:2019-09-26 23:48:18

标签: c++ compiler-errors visual-studio-2019 in-addr

以下代码无法编译。我遇到两个错误:

    _TCHAR* pStrAddress;
    ... some stuff here...
    IN_ADDR  sa;
    InetPton(AF_INET, pStrAddress, &sa);
    *pIP = sa.S_un.S_addr;

1)IN_ADDR->错误C2065:“ AF_INET”:未声明的标识符

2)InetPton(...)-> C3861:'InetPton':找不到标识符

我的配置如下:

  • VS-2019 pro
  • Windows SDK 10.0.18362.0(最新于9/26/2019)
  • 当我按F12键(转到定义)时,以下文件在编辑器中打开(C:\ Program Files(x86)\ Windows Kits \ 10 \ Include \ 10.0.18362.0 \ shared \ inaddr.h和C:\ Program文件(x86)\ Windows Kits \ 10 \ Include \ 10.0.18362.0 \ um \ WS2tcpip.h)。
  • 项目设置“ C / C ++ |常规|其他包含目录”已选中“从父级或项目默认继承”复选框。
  • Ws2_32.lib存在于“链接器|其他依赖项”中(但我的问题不是关于链接的问题,还是现在还没有)
  • 我的程序使用unicode,并且InetPton(...)扩展为InetPtonW,这是正确的。

要恢复,可以在编辑器中访问这些符号,但是预检/编译器似乎没有相同的路径。显然,我缺少了一些最明显的东西。 非常感谢您的帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

找到了! 我创建了一个仅包含所需代码的小项目,作为代码示例,一切都可以正常编译。因此,首先必须显而易见。然后就打我!:预编译的标头不是第一个include。

谢谢大家的帮助!

不良代码:

    #include <windows.h>
    #include <ws2tcpip.h>
    #include <stdlib.h>

    #include "pch.h"   <-- this must be the first include!!!!!!

良好代码:

    #include "pch.h"   <-- ok, happy compiler and developer  ;)

    #include <windows.h>
    #include <ws2tcpip.h>
    #include <stdlib.h>