Qt 未在范围中声明inet\u pton

Qt 未在范围中声明inet\u pton,qt,mingw32,Qt,Mingw32,我目前正在开发客户端应用程序,一切都进展顺利,直到我尝试在我的Windows7机器上构建,该项目将在Vista和Linux Mint15上完美编译和运行 我得到一个未在作用域中声明的错误inet\u pton 在Windows7和Linux上,我在Vista上使用MinGW,MSVC编译器都使用Qt5.2.0 我得到的印象是这是一个关于Windows的问题?显然,Linux正在使用另一个包含 其中包括: #if defined(WIN32) #include <windows.h>

我目前正在开发客户端应用程序,一切都进展顺利,直到我尝试在我的Windows7机器上构建,该项目将在Vista和Linux Mint15上完美编译和运行

我得到一个未在作用域中声明的错误inet\u pton

在Windows7和Linux上,我在Vista上使用MinGW,MSVC编译器都使用Qt5.2.0 我得到的印象是这是一个关于Windows的问题?显然,Linux正在使用另一个包含

其中包括:

#if defined(WIN32)
#include <windows.h>
#include <ws2tcpip.h>
#include <wspiapi.h>
#include <string>  // DJM: Cannot have <string.h>
#include <winsock2.h>
#include <stdlib.h>
#include <w32api.h>
#include <stdio.h>
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>
#endif



    bool Socket::connect ( const std::string &host, const int port )
{
  if ( ! is_valid() ) return false;
  m_addr.sin_family = AF_INET;
  m_addr.sin_port = htons ( port );
  int status = inet_pton ( AF_INET, host.c_str(), &m_addr.sin_addr );
#ifndef WIN32
  if ( errno == EAFNOSUPPORT ) return false;
#endif
  status = ::connect ( m_sock, ( sockaddr * ) &m_addr, sizeof ( m_addr ) );
  if ( status == 0 )
    return true;
  else
    return false;
}
#如果已定义(WIN32)
#包括
#包括
#包括
#include//DJM:不能有
#包括
#包括
#包括
#包括
#否则
#包括
#包括
#包括
#包括
#包括
#包括
#恩迪夫
布尔套接字::连接(常量std::字符串和主机,常量int端口)
{
如果(!is_valid())返回false;
m_addr.sinu family=AF_INET;
m_addr.sin_port=htons(port);
int status=inet\u pton(AF\u inet,host.c\u str(),&m\u addr.sin\u addr);
#ifndef WIN32
if(errno==EAFNOSUPPORT)返回false;
#恩迪夫
状态=::连接(m_sock,(sockaddr*)和m_addr,sizeof(m_addr));
如果(状态==0)
返回true;
其他的
返回false;
}
“包含”是搜索答案的结果,但似乎没有任何效果:/


我想快速的解决方案是安装QT MSVC2010,但如果有一个代码选项,那就太酷了:)

你能澄清一下这个问题与QT的关系吗?我正在使用QT创建客户端应用程序,我的主计算机使用带MinGW的QT 5.2.1。在做了更多的研究之后,这似乎是一个明的问题,所以简单的选择是使用MSVC代替。。。。但鉴于这是一个已知的问题,看看是否有一种使用MingWB编译的方法会很有趣,但我在这里没有看到任何Qt代码。这里您只使用POSIX和标准库。这是一个一般性的MinGW问题,所有帐户都在运行很长时间,所以我只使用了MSVC,它可以很好地编译,在Linux和Mac上也可以使用QT。