Winsock2.h:没有这样的文件或目录
我正在尝试使用mingw32 for Linux进行编译 但是,我收到以下错误和警告:Winsock2.h:没有这样的文件或目录,c,linux,compilation,mingw32,windows-2000,C,Linux,Compilation,Mingw32,Windows 2000,我正在尝试使用mingw32 for Linux进行编译 但是,我收到以下错误和警告: # i586-mingw32msvc-gcc ms04-020.c -lws2_32 -o ms04-020.exe ms04-020.c:43:22: error: Winsock2.h: No such file or directory ms04-020.c: In function ‘main’: ms04-020.c:113: warning: incompatible implicit decla
# i586-mingw32msvc-gcc ms04-020.c -lws2_32 -o ms04-020.exe
ms04-020.c:43:22: error: Winsock2.h: No such file or directory
ms04-020.c: In function ‘main’:
ms04-020.c:113: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:114:11: warning: unknown escape sequence '\;'
ms04-020.c: In function ‘readwrite’:
ms04-020.c:251: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:259: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:264: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:279: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:285: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:290: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:301: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:307: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:312: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c: In function ‘client_connect’:
ms04-020.c:333: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:343: warning: incompatible implicit declaration of built-in function ‘printf’
如何修复有关
Winsock2.h
的错误?不过,我确实设法在Windows7上使用VisualStudio2013编译了该文件,这将是一个可接受的解决方案。因此,即使以这种方式构建,二进制文件也不会执行。正如您可以从其名称猜到的,winsock2.h
与TCP/IP套接字的Windows实现直接相关,并且只存在于Windows系统上
Windows和Linux之间可能很难完全兼容include
。嗯,你应该:
- 从源代码中删除
#包括
,以便Linux编译或更好地编写:
#ifdef _WIN32 #include <Winsock2.h> #endif
\ifdef\u WIN32 #包括 #恩迪夫
- 添加(最终在
部分)缺少的标题#else
当前,
警告:内置函数“printf”的不兼容隐式声明
表明您缺少一个#include
Windows系统头文件是否位于编译器默认搜索的路径中?您可能需要使用-I
(大写I)选项来添加路径。@JoachimPileborg:我没有Winsock2.h
文件-从哪里可以获得它?我不知道是否有包含WIN32系统库和头文件的MinGW包,您应该查找它。如果没有,应该有大量的教程如何做。很好-不需要#else
部分-它通过去掉#include
行并添加#include
来编译。