首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gcc即使在Linux上安装了mingw包之后也找不到"windows.h、winsock2.h和ws2tcpip.h“头文件。

gcc即使在Linux上安装了mingw包之后也找不到"windows.h、winsock2.h和ws2tcpip.h“头文件。
EN

Stack Overflow用户
提问于 2020-05-29 07:27:35
回答 2查看 7.8K关注 0票数 1

我试图在Linux中使用winsock2.h、windows.h和ws2tcpip.h创建一个c/c++程序。但是,我得到以下错误消息:

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

窗口也是如此。

无法打开源文件"windows.h"C/C++(1696)

我已经使用以下命令在我的系统上安装了Mingw

代码语言:javascript
运行
复制
mingw-w64-common mingw-w64-i686-dev mingw-w64-tools mingw-w64-x86-64-dev

我的计划

代码语言:javascript
运行
复制
#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

EN

回答 2

Stack Overflow用户

发布于 2020-05-29 07:55:23

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

注意:我在这里的意图不是使用gcc提供的混合头;这只是为了演示。

dpkg -L mingw-w64-common在我的系统上提供了这样的输出。

代码语言:javascript
运行
复制
/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在我的系统上提供了这样的输出

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

票数 2
EN

Stack Overflow用户

发布于 2020-05-29 11:29:17

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62080803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档