Это в winsock2.h
согласно документам MSDN и из моей системы разработки (в C:\Program files (x86) Microsoft SDKs\Windows\v7.0A\Include\Winsock2.h
):
WINSOCK_API_LINKAGE u_long WSAAPI ntohl (__in u_long netlong);
Я не уверен, почему это "не работает" для вас. Если вы получаете сообщение об ошибке, вам необходимо опубликовать его.
Исходя из того, что ваш вопрос редактируется о том, почему у вас возникают проблемы с winsock2.h
, похоже, вы пытаетесь включить оба winsock.h
и winsock2.h
- это редко хорошая идея :-) Они на самом деле фундаментально несовместимо, winsock2
является более поздней версией с дополнительными вкусностями.
К сожалению, это не всегда под вашим очевидным контролем, поскольку windows.h
автоматически включает winsock.h
для вас при большинстве обстоятельств.
По памяти, одним из способов решения этой проблемы является определение WIN32_LEAN_AND_MEAN
перед включением windows.h
. Это предотвратит включение некоторых из менее используемых заголовков.
Другой способ - определить _WINSOCKAPI_
перед включением windows.h
- это также предотвратит включение winsock.h
.
Третий (и, вероятно, предпочтительный) способ заключается в простом включении winsock2.h
перед windows.h
. winsock2.h
определяет _WINSOCKAPI_
, поэтому имеет тот же эффект, что и предыдущий абзац.