2010-11-28 2 views
2

Я делаю проект в Windows, и файл «winsock2.h» вызывает проблемы во время компиляции (у меня есть базовая библиотека очередей, которая имеет функцию «отправить», «получать» и т. Д., И она жалуется на «winsock2». h "также имеет функцию« отправить »).Как исключить "winsock2.h"?

Я просто включаю «windows.h», так есть способ, которым я могу ИСКЛЮЧИТЬ включение «winsock2.h», чтобы мое приложение могло скомпилировать?

Спасибо за помощь ;-)

Линтон

ответ

0

Если вы #define WIN32_LEAN_AND_MEAN перед включением windows.h, вы получите намного меньше заголовки автоматически втягивается в.

Хотя в моей системе, окна. h включает winsock.h, а не winsock2.h, поэтому вам, возможно, придется дважды проверить его на самом деле из-за включения windows.h.

+0

Это один кажется лучше, #define WIN32_LEAN_AND_MEAN кажется, избавился от этого Winsock2. h вещи .... получить некоторые другие ошибки, хотя, позвольте мне копаться в нем ..... спасибо ;-) – 2010-11-28 12:28:36

1

Ну, winsock2.h содержит защитную оболочку #ifndef _WINSOCK2API_, поэтому определяйте _WINSOCK2API_ перед включением windows.h, чтобы предотвратить его включение.

Хотя лучшее решение, ИМО, это поместить вашу библиотеку в его собственном пространстве имен (например, queue_send, msgq_send и т.д.)

+0

Спасибо за это, я попытался определить _WINSOCK2API_ перед заголовочным файлом, и он по-прежнему дал ту же ошибку. Я не хочу менять пространство имен моей внешней библиотеки, так как это радует Unix и т. Д., И я не чувствую, что должен вообще поклониться Windows. Но спасибо за ваши комментарии, я ценю это ;-) – 2010-11-28 12:26:27

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