開始使用boost::asio庫時,編譯碰到這個錯誤提示:
fatal error C1189: #error : WinSock.h has already been included
查了下拋出這個錯誤的boost代碼,原來是定義了_WINSOCKAPI_,但沒有定義_WINSOCK2API_
那哪里定義了_WINSOCKAPI_呢?
后來在網上查了下,原來是我包含了Windows.h頭文件,而Windows.h頭文件又包含了WinSock.h這個老東西
知道原因就簡單了,試了下,方法有三種可解決此錯誤:
1、在包含Windows.h前定義宏WIN32_LEAN_AND_MEAN,就OK了(WIN32_LEAN_AND_MEAN表示不包含一些極少使用和偏門的資料)
2、在包含Windows.h前包含winsock2.h
3、在包含Windows.h前包含asio.hpp