2011-11-04 68 views
1

當我沒有定義WINVER時,我的(msvc9)版本充滿了警告,它表示它默認爲0x0600(Vista),但它構建成OK。當我定義WINVER = 0x501(XP),我得到這個錯誤: -WINVER,winsock和htonl()

error C3861: 'htonl': identifier not found 

我寧願使用WINVER = 0x0501比爲0x0600,但我不知道如何解決它!

我注意到http://west-chamber-season-2.googlecode.com/svn-history/r2/trunk/wcs2_cli.c

#ifdef WINVER 
#include <winsock.h> 
#else 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 
#endif 

我需要做一些奇怪的是這樣的東西嗎?有任何想法嗎?

+0

看起來像htonl在\t'Winsock2.h',你有沒有試圖包括它? – CharlesB

回答

1

如果您正在爲Windows編譯,那麼#include winsock2.h和ws2tcpip.h並鏈接到ws2_32.lib。在嘗試任何聯網功能之前,請確保您撥打WSAStartup

+0

我不是100%確定,但這看起來很有趣。 如果_WIN32_WINNT被定義爲等於WINVER,那麼這將解釋我的問題。 C:\ Program Files文件\微軟的Visual Studio 9.0 \ VC \ atlmfc \包括\ afxwin.h '#如果(_WIN32_WINNT> = 0x600) 的#ifndef _WINSOCK2API_ 的#ifdef _WINSOCKAPI_ \t #ERROR MFC需要使用的Winsock2的.h #endif \t #include #endif' – shanz