c - 如何在Windows 10中正确使用inet_pton rotine?

标签 c windows sockets

我注意到 arpa/inet.h lib 不适用于 Windows 平台。另请参阅 winsock2.h 实现了一个模拟函数 InetPton 来转换 IPv4 或 IPv6 Internet 网络地址。然后我尝试构建一些指令,例如:

#include <winsock2.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>


int main(void)
{
   struct sockaddr_in sa;

   InetPton(AF_INET, "10.20.30.40", &(sa.sin_addr));
}

并得到以下编译错误:

undefined reference to `InetPton'

要在 Windows (10) 上使用此功能,我需要做什么/包括什么?

最佳答案

可能有点晚了,但我最近遇到了这个问题,并找到了答案,我希望对任何偶然发现它的人都有用。

首先,您必须在链接编辑器窗口中包含 ws2_32.lib 库(假设您使用的是 Visual Studio)。

然后,您必须在进行包含之前定义 _WIN32_WINNT (更多详细信息 here )。

对于 Windows 10,它可能看起来像这样。

#define _WIN32_WINNT _WIN32_WINNT_WIN10
#include <winsock2.h>
#include <ws2tcpip.h>

查看 header 时,您会发现如果_WIN32_WINNT值设置不正确,您将无法访问某些功能,或者设置为旧的 Windows 版本。

希望这有帮助!

关于c - 如何在Windows 10中正确使用inet_pton rotine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287936/

相关文章:

windows - Windows 10 Powershell中未在System.Speech选项中显示已安装的文本语音转换语音

windows - 您通常将 DirectX SDK 文件夹放在哪里?

c - 有可用的 mbed 以太网接口(interface)库吗?

c - 在 C 中,如何 malloc 和释放一个 SOCKET(已经是一个指针)

c - 在 C 中递归地打印 Linux 中路径中的所有文件和文件夹

c - 对浮点值进行四舍五入

C 使用 strcpy 替换二维字符数组中的字符串问题

javascript - 如何直接从 Windows 8 商店应用程序打印 pdf (javascript)

c++ - 读取和写入进程 I/O?

c - 如何计算有符号位域的最大支持值?