我已经在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
。