2012-02-20 13 views
-1

Я ищу файл заголовка в окнах, который я могу использовать для получения функции ntohl в C, но Winsock2.h не будет работать для меня. Кто-нибудь знает, какие другие файлы заголовков предоставят это?Где я могу найти ntohl

Вот некоторые ошибки, которые я получаю, когда я пытаюсь включить Winsock2.h

C:\Program Files (x86)\PellesC\Include\Win\Winsock2.h(1045): error #2120: Redeclaration of 'getservbyport', previously declared at C:\Program Files (x86)\PellesC\Include\Win\winsock.h(468); expected 'PSERVENT __stdcall function(int, const char *)' but found 'struct servent * __stdcall function(int, const char *)'. 
C:\Program Files (x86)\PellesC\Include\Win\Winsock2.h(135): error #2123: Redefinition of 'hostent', previously defined at C:\Program Files (x86)\PellesC\Include\Win\winsock.h(91). 
C:\Program Files (x86)\PellesC\Include\Win\ws2def.h(39): error #1050: Redefinition of macro 'AF_IPX'. 
C:\Program Files (x86)\PellesC\Include\Win\Winsock2.h(1310): error #2121: Redeclaration of 'LPSOCKADDR_IN'. 
+5

Почему winsock2.h не работает для вас? – reuben

+0

Я опубликовал несколько примеров ошибок, которые получаю, когда я пытаюсь их включить. –

+0

Похоже, вы пытаетесь включить как 'winsock.h', так и' winsock2.h'. Это звучит правдоподобно? –

ответ

0

В конце концов я решил свою проблему. Я забыл загрузить комплект разработки программного обеспечения для Windows и добавить в него проекты каталогов и т. Д. Я предположил, что мой компилятор пришел со всеми библиотеками и заголовками для сокетов.

6

Это вwinsock2.h как на the MSDN docs и от системы развития шахты (в 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.

Третий (и prbably предпочтительнее) способ просто включить winsock2.hперед темwindows.h. winsock2.h определяет _WINSOCKAPI_ так же, как и предыдущий абзац.

+0

Winsock2.h никогда не работал для меня. Когда я пытаюсь включить его, я получаю беспорядок. Я отправлю несколько примеров в своем оригинальном посте. –

Смежные вопросы