繁体   English   中英

gcc unable to find “windows.h, winsock2.h and ws2tcpip.h” header files even after installing mingw package on Linux

[英]gcc unable to find “windows.h, winsock2.h and ws2tcpip.h” header files even after installing mingw package on Linux

我正在尝试在 Linux 中使用 winsock2.h、windows.h 和 ws2tcpip.h 创建 ac/c++ 程序。 但我收到以下错误消息:

无法打开源文件“winsock2.h”C/C++(1696)

同样适用于 windows.h

无法打开源文件“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; }

VSC 版本 - 1.45.1

操作系统-Debian

这些问题似乎与“找不到 header 文件”有关。 如果使用 gcc 包含自定义标头路径(或目录),则执行以下操作。

注意:我的意图不是使用 mingw 提供的带有 gcc 的标头; 这仅用于演示目的。

dpkg -L mingw-w64-common在我的系统上给出了这样的 output 。

/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在我的系统上给出了这样的 output

#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进行编译。 您为工具链的编译器提供了类似的选项。 但是您可能需要根据您的代码使用的库来处理链接错误。

消息格式cannot open source file "winsock2.h"C/C++(1696)在我看来不像 GCC 会说的那样。 是否有可能在安装 MinGW-w64 时没有使用它的 GCC 编译器? 要使 MinGW-w64 工作,您需要实际使用它的工具链(编译器、链接器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM