boost asio и WinSock.h уже включены

Как и многие люди, которые использовали библиотеку Boost ASIO, я получаю сообщение об ошибке "WinSock.h уже включен". В других сообщениях на вопрос был дан ответ, переместив строку #include над #include

В моем случае я работаю над проектом, который использует Wx Widgets и, похоже, не имеет никаких подключений к MFC или прямых подключений к Win32. Я не смог найти ни звонков в windows.h, ни что-либо связанное. Я также пытался использовать объявления WIN32_LEAN_AND_MEAN и BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN.

Мне интересно, сталкивался ли кто-нибудь с проектом Wx Widgets с подобной проблемой с Boost ASIO? Если да, удалось ли обойти ошибку Winsock?

2 ответа

У меня есть решение. Шаги для исправления этого - определить WIN32_LEAN_AND_MEAN в настройках проекта.

Зайдите в Проект-> Свойства, выберите C/C++-> Препроцессор

Под Определениями препроцессора добавьте WIN32_LEAN_AND_MEAN.

Ошибка, которую я делал раньше, заключалась в добавлении #define WIN32_LEAN_AND_MEAN в файлы кода. Это ничего не помогло. Обратите внимание, что мой #include все еще установлен над включениями WxWidget.

Настройка wxUSE_IPV6 1 или, альтернативно, настройка wxUSE_SOCKETS до 0 в вашем include/wx/msw/setup.h файл должен решить проблему - либо путем включения заголовков WinSock2, если вы делаете первые, либо не включая заголовки WinSock, ни если вы делаете последние.

Не забудьте перестроить свою библиотеку wxWidgets, если вы что-либо измените!

Другие вопросы по тегам