Mój projekt używa windows.h, w którym jest używany winsock.h, i muszę dodać boost: assio, który używa winsock2. Dostaję wiele błędów, które mówią, że Winsock.h jest już włączony. Potrafię zdefiniować WIN32_LEAN_AND_MEAN. aby windows.h nie używał winsock. Problem polega na tym, że potrzebuję Windowsa.h, aby go użyć, i potrzebuję Asio tylko do asynchronicznych timerów. Nie potrzebuję jego winsock2.h. Próbowałem wyszukać, jak wyłączyć jego użycie winsock2 i odkryłem, że mogę to zrobić, definiując BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN przed włączeniem boost: asio, ale nadal otrzymuję ten sam błąd.Boost :: asio winsock i winsock 2 Problem zgodności
#include <windows.h>
#define BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN
#include <boost/asio.hpp>
Błąd
1>c:\program files\boost\boost_1_47\boost\asio\detail\socket_types.hpp(22): fatal error C1189: #error : WinSock.h has already been included
Zadziałało! Dzięki :) –
Jeszcze jedno pytanie: Czy aplikacja może odczytywać pakiety z winsock2 z innej aplikacji, która wysyła pakiety z winsock1? I vice werset. –
@DainiusKreivys Nie jestem pewien, jakie aktualizacje zostały wykonane od winsock1 do 2. Mogę się tylko domyślać, że to głównie poprawki błędów. Błędy odkładane na bok powinny działać poprawnie, ale ponieważ prawdopodobnie istnieją błędy, mogą pojawić się. – selalerer