如何在没有#include <winsocket2.h>
的情况下检索与主机名相关的IP?
我无法使用<winsocket2.h>
方法,因为我的DLL崩溃而没有任何编译错误,以下代码不起作用...
hostent *h = gethostbyname(hostName);
LogAlways((const char*)inet_ntoa(*(reinterpret_cast<in_addr*>(h->h_addr))));
答案 0 :(得分:1)
没有include(或依赖于外部库),几乎没办法。
为了获取映射到IP的主机名,您需要执行RARP请求,这几乎要求您能够使用套接字。因此,您需要能够创建套接字。这是winsock2.lib作为库提供的内容。
所以,你最好让winsock2.lib工作。当你说你的DLL崩溃没有任何编译错误我假设你在谈论你自己的代码,你正在尝试编译成DLL。
调试怎么样?您是否尝试单步执行代码以查看其失败的位置? hostName的类型是什么?检查以确保您没有尝试访问空指针上的成员。并且在使用变量之前已经正确分配了内存。否则,让我们更具体地了解您在调试器中获得的错误消息。