在Windows上的C中使用curl

问题描述

我现在遵循了多个有关如何在Windows上的C项目中使用curl的“指南”,但几乎没有成功。我已经使用vs代码安装并构建了curl的静态版本,在构建以下代码时遇到以下问题:

li.product:nth-child(2n)

我得到:

#define CURL_STATICLIB
#include <stdio.h>
#include "curl/curl.h"
 
int main(void)
{
  CURL *curl;
  CURLcode res;
 
  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl,CURLOPT_URL,"https://example.com");
    /* example.com is redirected,so we tell libcurl to follow redirection */ 
    curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L);
 
    /* Perform the request,res will get the return code */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr,"curl_easy_perform() Failed: %s\n",curl_easy_strerror(res));
 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  return 0;
}

我看到一些使用>gcc libcurl_test.c C:\Users\JAKOBV~1.soF\AppData\Local\Temp\ccsynorR.o:libcurl_test.c:(.text+0xc3): undefined reference to `curl_easy_init' C:\Users\JAKOBV~1.soF\AppData\Local\Temp\ccsynorR.o:libcurl_test.c:(.text+0xf6): undefined reference to `curl_easy_setopt' C:\Users\JAKOBV~1.soF\AppData\Local\Temp\ccsynorR.o:libcurl_test.c:(.text+0x11a): undefined reference to `curl_easy_setopt' C:\Users\JAKOBV~1.soF\AppData\Local\Temp\ccsynorR.o:libcurl_test.c:(.text+0x126): undefined reference to `curl_easy_perform' C:\Users\JAKOBV~1.soF\AppData\Local\Temp\ccsynorR.o:libcurl_test.c:(.text+0x13d): undefined reference to `curl_easy_strerror' C:\Users\JAKOBV~1.soF\AppData\Local\Temp\ccsynorR.o:libcurl_test.c:(.text+0x165): undefined reference to `curl_easy_cleanup' collect2.exe: error: ld returned 1 exit status 解决了问题的人,但是我得到的只是gcc libcurl_test.c -lcurl

在使用C尤其是库方面,我经验不足,我在做什么错?我的文件结构如下:

enter image description here

curl文件夹中有以下文件

enter image description here

如果我应该添加更多信息,请发表评论,我不确定您感兴趣的是什么,而不是....

解决方法

仅包含curl/curl.h可使编译器知道存在哪些函数,但实际上并没有将这些函数添加到可执行文件中。为此,您还需要链接到包含这些功能的实际实现的库,即curl/libcurl_a.lib

要告诉gcclibcurl_a.lib链接,因为它是一个 static 库,只需将其路径放在命令行上即可:

gcc libcurl_test.c curl/libcurl_a.lib