我试图在Linux中使用winsock2.h、windows.h和ws2tcpip.h创建一个c/c++程序。但是,我得到以下错误消息:
无法打开源文件"winsock2.h"C/C++(1696)
窗口也是如此。
无法打开源文件"windows.h"C/C++(1696)
我已经使用以下命令在我的系统上安装了Mingw
mingw-w64-common mingw-w64-i686-dev mingw-w64-tools mingw-w64-x86-64-dev
我的计划
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")
int main() { return 0; }
VSCver-1.45.1
OS - Debian
发布于 2020-05-29 07:55:23
问题似乎与“找不到头文件”有关。如果使用gcc包含自定义标题路径(或目录),则执行如下操作。
注意:我在这里的意图不是使用gcc提供的混合头;这只是为了演示。
dpkg -L mingw-w64-common
在我的系统上提供了这样的输出。
/usr/share/mingw-w64/include/windows.h
/usr/share/mingw-w64/include/winsock2.h
/usr/share/mingw-w64/include/ws2tcpip.h
gcc -v test.c
在我的系统上提供了这样的输出
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/9/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
因此,很明显,头文件是否位于默认搜索路径中。在这种情况下,您需要使用gcc -I/usr/share/mingw-w64/include
进行编译。您可以为工具链的编译器提供类似的选项。但是,您可能需要根据代码使用的库来处理链接错误。
发布于 2020-05-29 11:29:17
在我看来,cannot open source file "winsock2.h"C/C++(1696)
的信息格式不像GCC所说的那样。您是否可能在安装MinGW-w64时没有使用它的GCC编译器?要使MinGW-w64工作,您需要实现它的工具链(编译器、链接器)。
https://stackoverflow.com/questions/62080803
复制相似问题