问题描述
我正在尝试使用 cURL,但每次我尝试用它编译项目时,都会遇到标题中提到的相同错误。我知道十几个关于类似问题的帖子。但是,到目前为止我读过的大多数解决方案要么不起作用,要么我似乎无法找到适合我的模拟,因为我在 Windows 10 操作系统上使用 mingw32。 >
我正在尝试使用 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]"
解决方法
Mingw 是 Windows 的 gcc。实际上,适用于 gcc 的所有内容都适用于 mingw。
最好在你的 Makefile 中使用相对路径,并且 gnu make(它是 mingw/msys 的一部分)总是使用“/”作为路径分隔符。如果您必须使用像 C:\dev\projects\mylib
这样的绝对路径,请以这种方式使用:C:/dev/projects/mylib
。
回到您的 curl:curl/curl.h
位于 C:\path\to\curl-7.76.1-win32-mingw\include\curl\curl.h
中,因此您需要将包含目录添加到指向正确目录的 gcc 命令行,即 C:\path\to\curl-7.76.1-win32-mingw\include
,因为您使用 { {1}}。如果您没有在系统范围内安装它(那个 curl),那么在 "curl/curl.h"
路径中使用 "curl/curl.h"
也比使用 #include
更好。
所以你所要做的就是将 <curl/curl.h>
添加到你的编译行,比如:
-Ipath/to/curl-7.76.1-win32-mingw/include
它可以在 Makefile 中自动完成:
g++ -O2 -Ipath/to/curl-7.76.1-win32-mingw/include -c -omain.o main.cpp
,
你写道:
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>
我真诚地希望这会有所帮助。