據其documentationWs2tcpip.h
是其實際的頭文件。
編輯:
根據文檔,使用此功能需要您代碼的Windows Vista或更高版本進行編譯。既然你是包括必要的頭,但功能是不可見的,我揣你沒有設置正確的定義或編譯器選項編譯代碼一個合適的版本。
您正在使用
實際的Windows版本並不重要 - 要編譯什麼(即目標版本)是。
編輯2:
描述here指示哪個Windows版本要編譯支持您應該添加適當的#define
指令。例如。
#include <SdkDdkver.h>
#define NTDDI_VERSION NTDDI_VISTA
#define WINVER _WIN32_WINNT_VISTA
#define _WIN32_WINNT _WIN32_WINNT_VISTA
一些定義的重疊,可能並不需要,但在罕見的時間窗口我的代碼我只是使用它們,確保:-)
編輯3:
事情對的MinGW/GCC有點不同:
#include <w32api.h>
#define WINVER WindowsVista
#define _WIN32_WINDOWS WindowsVista
#define _WIN32_WINNT WindowsVista
注意:這些定義應放在包括Windows.h
或任何其他頭,但之前10。
編輯4:
從WS2tcpip.h
在Visual Studio 2010:
#if (NTDDI_VERSION >= NTDDI_VISTA)
.
.
.
PCSTR
WSAAPI
inet_ntop(
__in INT Family,
__in PVOID pAddr,
__out_ecount(StringBufSize) PSTR pStringBuf,
__in size_t StringBufSize
);
PCWSTR
WSAAPI
InetNtopW(
__in INT Family,
__in PVOID pAddr,
__out_ecount(StringBufSize) PWSTR pStringBuf,
__in size_t StringBufSize
);
#define InetPtonA inet_pton
#define InetNtopA inet_ntop
#ifdef UNICODE
#define InetPton InetPtonW
#define InetNtop InetNtopW
#else
#define InetPton InetPtonA
#define InetNtop InetNtopA
#endif
.
.
.
#endif // (NTDDI_VERSION >= NTDDI_VISTA)
因此,關鍵在這種情況下定義是NTDDI_VERSION,人們所期待的新的API增加。
我在MinGW32/GCC-4.4.2中找不到InetNtop
的定義,所以它很可能在你的版本中不受支持。
究竟是什麼問題?你的代碼是否被編譯? – thkala 2011-02-03 19:35:23
它沒有得到像錯誤一樣的錯誤:'InetNtop'沒有在這個範圍內聲明,並且名稱沒有被解析 – Kobe 2011-02-03 19:40:44
看看頭部內部,看看它是否真的存在,如果它不存在,那麼沒有大量的項目配置可以幫你。您最好的選擇是獲得最新的副本。 – dreamlax 2011-02-03 20:20:03