【问题标题】:Getting error: fatal error: curl/curl.h: No such file or directory #include <curl/curl.h>出现错误:致命错误:curl/curl.h:没有这样的文件或目录#include <curl/curl.h>
【发布时间】:2021-07-27 09:38:09
【问题描述】:

我正在尝试使用 cURL,但每次尝试使用它编译项目时,都会遇到标题中提到的相同错误。我知道关于类似问题的十几篇文章。但是,到目前为止,我阅读的大多数解决方案要么不起作用,要么似乎找不到适合我的模拟,因为我在 Windows 10 操作系统上使用 mingw32。 p>

我正在尝试使用curl-7.76.1-win32-mingw.zip。我是从 cURL 站点获得的,无论我尝试将文件粘贴到何处,都无法正确编译。

有人,请像我 5 岁一样向我解释你的解决方案或想法。我的大脑已经融化了。

这是实际的错误:

PS C:\Users\Me> g++ -I "C:\Program Files\Curl\curl-7.76.1-win32-mingw\include\curl" -c "D:\Personal\Projects\#####\#####\#####\#####\main.cpp" -o "D:\Personal\Projects\#####\#####\#####\#####/main"
 In file included fromD:\Personal\Projects\#####\#####\#####\#####\main.cpp:4:
D:\Personal\Projects\#####\#####\#####\#####\testapi.hpp:7:10: fatal error: curl/curl.h: No such file or directory
 #include <curl/curl.h>
          ^~~~~~~~~~~~~
compilation terminated.
[Finished in 0.6s]"

【问题讨论】:

  • 你在输入什么来构建?对于 gcc、g++、clang,-I /some/path/to/header/files 是您指定额外包含路径目录的方式。我对 windows 的 mingw 不是很熟悉,但 this answer 听起来你可以 g++ -I C:\directory\to\curl\headers ...
  • 虽然我同意上面的评论,但问题是包含路径设置不正确,您可能希望切换到使用 msys2 来交付您的 mingw 并使用它的包管理来安装 curl:@987654322 @和https://packages.msys2.org/package/mingw-w64-x86_64-curl
  • 显示您的实际构建命令。显示你安装 curl 的位置
  • 您想在标题帖子中添加“mingw”标签。它也与 curl 无关,因此最好将它们删除。

标签: c++ c curl libcurl


【解决方案1】:

Mingw 是 Windows 的 gcc。几乎所有适用于 gcc 的东西都适用于 mingw。

最好在 Makefile 中使用相对路径,并且使用 gnu make(它是 mingw/msys 的一部分)始终使用 '/' 作为路径分隔符。如果您必须使用像C:\dev\projects\mylib 这样的绝对路径,请使用这种方式:C:/dev/projects/mylib

回到你的 curl:curl/curl.hC:\path\to\curl-7.76.1-win32-mingw\include\curl\curl.h 中,所以你需要将包含目录添加到指向正确目录的 gcc 命令行中,即 C:\path\to\curl-7.76.1-win32-mingw\include,因为你使用了 "curl/curl.h"。如果您没有在系统范围内安装它(那个 curl),那么在 #include 路径中使用 "curl/curl.h" 也比使用 &lt;curl/curl.h&gt; 更好。

所以你所要做的就是在你的编译行中添加-Ipath/to/curl-7.76.1-win32-mingw/include,比如:

g++ -O2 -Ipath/to/curl-7.76.1-win32-mingw/include -c -omain.o main.cpp

可以在 Makefile 中自动完成:

CXX = g++
CFLAGS += -O2
INCLUDES += -Ipath/to/curl-7.76.1-win32-mingw/include

.cpp.o:
    $(CXX) -c $(CXXFLAGS) $(INCLUDES) $*.cpp

【讨论】:

  • 我更新了我的帖子。我已经尝试了您的解决方案,但没有骰子。不过我会继续玩它。
  • 因为您的包含路径 (-I) 错误。再次阅读我的答案。应该是g++ -I"C:/Program Files/Curl/curl-7.76.1-win32-mingw/include"。由于文件名(“程序文件”)中有空格,它仍然可能无法正常工作。您最好将其放置在名称中没有空格的路径中。
  • 艾菊,你是救世主。我会以你的名字命名我的下一个孩子......除非我不这样做。谢谢!
【解决方案2】:

你写:

g++ -I "C:\Program Files\Curl\curl-7.76.1-win32-mingw\include\curl"

尝试更好:

g++ -I "C:\Program Files\Curl\curl-7.76.1-win32-mingw\include"

正如您在代码示例中所写:

#include <curl/curl.h>

或保留原来的-I 选项,并将您的#include 更改为:

#include <curl.h>

我真诚地希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 2014-05-15
    • 2014-07-17
    • 1970-01-01
    • 2021-05-28
    • 2012-07-13
    • 2016-07-15
    • 1970-01-01
    相关资源
    最近更新 更多