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, если вы что-либо измените!