问题描述
我现在遵循了多个有关如何在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尤其是库方面,我经验不足,我在做什么错?我的文件结构如下:
如果我应该添加更多信息,请发表评论,我不确定您感兴趣的是什么,而不是....
解决方法
仅包含curl/curl.h
可使编译器知道存在哪些函数,但实际上并没有将这些函数添加到可执行文件中。为此,您还需要链接到包含这些功能的实际实现的库,即curl/libcurl_a.lib
。
要告诉gcc
与libcurl_a.lib
链接,因为它是一个 static 库,只需将其路径放在命令行上即可:
gcc libcurl_test.c curl/libcurl_a.lib