我已经在Eclipse的Windows计算机上用C创建了一个经典的客户端服务器程序。代码本身不会产生任何错误。我唯一得到的错误是关于库的。我包括以下库:

#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdlib.h>
#include <stdio.h>


但是,当我尝试构建项目时出现错误:

error "ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead".


唯一的问题是,我没有包括winsock.h,而是仅包括winsock2.h,正如它们指定的那样。

我该如何解决这个问题?

更新

现在,我按以下顺序定义了库:

#define _WINSOCKAPI_   /* Prevent inclusion of winsock.h in windows.h */

#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>


但是现在我得到了更多错误:

undefined reference to `socket@12'
undefined reference to `gethostbyname@4'
undefined reference to `connect@12'
undefined reference to `htons@4'
undefined reference to `WSACleanup@0'
undefined reference to `closesocket@4'
undefined reference to `WSACleanup@0'
undefined reference to `WSAStartup@8'


更新2

我认为此警告可能与我仍然不断收到的错误有关:

ignoring #pragma comment  [-Wunknown-pragmas]

最佳答案

winsock2.h在顶部有一行:

#define _WINSOCKAPI_   /* Prevent inclusion of winsock.h in windows.h */


您需要在winsock2.h之前包括windows.h

08-28 01:06