1.問題原因
在VS2010中進行UDP或者TCP/IP通訊時,如果同時包含了Windows.h和WinSock2.h兩個標頭檔案,在編譯的時候會出現大量重複定義錯誤。
2.問題分析
這個問題出現的原因是Windows.h檔案中本身包含了Winsock.h標頭檔案,而WinSock2.h是WinSock.h的升級版,兩個同時引用的時候出現重複定義問題。
3.問題解決
解決思路就是要讓Winsock.h和WinSock2.h兩個當中只能用一個進行編譯,這樣的話解決的方法有:
方法一 不要同時包含Windows.h或者WinSock2.h,這對於一些不需要用到硬體介面的程式可行,但是對於需要用於硬體操作的程式必須包含Windows.h,這時這個方法會失效。
方法二 將
WinSock2.h
放在Windows.h
前面,這是一個最方便,最簡單的方法。方法三 新增自定義巨集,開啟VS2010中的Project的屬性,然後C/C++->Preprocessor->Preprocessor Definitions中新增如下巨集:
WIN32_LEAN_AND_MEAN