gpt4 book ai didi

XP 上的 C 程序入口点 inet_ntop WS2_32.dll?

转载 作者:行者123 更新时间:2023-11-30 15:42:52 26 4
gpt4 key购买 nike

我在 Windows XP 上收到错误“程序入口点 inet_ntop 无法位于动态链接库 WS2_32.dll 中”,经过一番谷歌搜索后,我发现 inet_ntop 在 XP 中不可用,所以我制作了一个宏使用 inet_ntoa 代替。但它似乎不起作用,我仍然遇到同样的错误......我错过了什么吗?

char *get_ip(char *host)
{
struct hostent *hent;
int iplen = 39;
long errorcode;
char *ip = (char *)malloc(iplen + 1);
memset(ip, 0, iplen + 1);

if ((hent = gethostbyname(host)) == NULL)
{
perror("Could not get the IP address");
exit(1);
}

#if (_WIN32_WINNT >= 0x600)
if (inet_ntop(AF_INET, (void *)hent->h_addr_list[0], ip, iplen) == NULL)
{
perror("Could not resolve the host");
exit(1);
}
#else
ip = inet_ntoa(*((struct in_addr *)hent->h_addr_list[0]));
if (ip == NULL)
{
perror("Could not resolve the host");
exit(1);
}
#endif

return ip;
}

最佳答案

您的代码需要在运行时切换行为。相反,它使用条件编译来确定编译时的行为。您的 #if 代码在编译时进行评估。我所期望的不是你想要的。实际上只有其中一个分支被编译。再说一次,我确信这不是你所期望的。

您需要使用运行时链接(LoadLibrary 和 GetProcAddress)并在运行时检查操作系统的版本以确定行为。

关于XP 上的 C 程序入口点 inet_ntop WS2_32.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com