Windows.h與WinSock2.h重複定義解決辦法

Steve2017發表於2017-10-31

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

相關文章