Posted on 2013-02-17 10:35
點(diǎn)點(diǎn)滴滴 閱讀(5590)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
02 編程語(yǔ)言
開(kāi)始使用boost::asio庫(kù)時(shí),編譯碰到這個(gè)錯(cuò)誤提示:
fatal error C1189: #error : WinSock.h has already been included
查了下拋出這個(gè)錯(cuò)誤的boost代碼,原來(lái)是定義了_WINSOCKAPI_,但沒(méi)有定義_WINSOCK2API_
那哪里定義了_WINSOCKAPI_呢?
后來(lái)在網(wǎng)上查了下,原來(lái)是我包含了Windows.h頭文件,而Windows.h頭文件又包含了WinSock.h這個(gè)老東西
知道原因就簡(jiǎn)單了,試了下,方法有三種可解決此錯(cuò)誤:
1、在包含Windows.h前定義宏WIN32_LEAN_AND_MEAN,就OK了(WIN32_LEAN_AND_MEAN表示不包含一些極少使用和偏門的資料)
2、在包含Windows.h前包含winsock2.h
3、在包含Windows.h前包含asio.hpp