我目前正致力于客户端应用程序,一切顺利,直到我尝试在Windows 7计算机上构建,该项目将在Vista和Linux Mint15上完美编译和运行。
我收到错误inet_pton未在范围
中声明在Windows 7和Linux上,我在Vista上使用MinGW MSVC编译器全部使用QT 5.2.0 我得到的印象是Windows上的MinGW问题?显然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;
}
包含是搜索答案的结果,似乎没有任何效果:/
我想快速解决方案是安装QT MSVC2010,但如果有代码选项会很酷:)