gpt4 book ai didi

c++ - 如何正确安装 libcurl 并将其链接到 C++ 程序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:01 26 4
gpt4 key购买 nike

我一直在尝试让 c++ 程序使用 libcurl,但无法弄清楚。在 C++ 中开发时,我通常使用 visual studio,但这个项目使用 vi 和使用 VI 和 g++ 的 centos 机器的 ssh session 。我运行了 yum install curl、yum install libcurl、yuminstall curl-devel 和 yum install libcurl-devel,但仍然无法编译程序。

关于 API 的文档非常好,我可以找到有关如何在正确安装 libcurl 后使用它的信息,但事实证明安装它是一件痛苦的事情。

代码是:

#include<iostream>
#include<string>
#include<curl/curl.h>
using namespace std;


string data; //will hold the urls contents

size_t writeCallback(char* buf, size_t size, size_t nmemb, void* up)
{ //callback must have this declaration
//buf is a pointer to the data that curl has for us
//size*nmemb is the size of the buffer

for (int c = 0; c<size*nmemb; c++)
{
data.push_back(buf[c]);
}
return size*nmemb; //tell curl how many bytes we handled
}

int main(void) {

CURL* curl;

curl_global_init(CURL_GLOBAL_ALL);
curl=curl_easy_init();

curl_easy_setopt(curl, CURLOPT_URL, "https://domain.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writeCallback);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_USERPWD, "username:password");

curl_easy_perform(curl);

cout << endl << data << endl;
cin.get();

curl_easy_cleanup(curl);
curl_global_cleanup();


return 0;
}

当我尝试编译时出现以下错误:

/tmp/ccfeybih.o: In function `main':
helloworld.cpp:(.text+0x72): undefined reference to `curl_global_init'
helloworld.cpp:(.text+0x77): undefined reference to `curl_easy_init'
helloworld.cpp:(.text+0x96): undefined reference to `curl_easy_setopt'
helloworld.cpp:(.text+0xb1): undefined reference to `curl_easy_setopt'
helloworld.cpp:(.text+0xcc): undefined reference to `curl_easy_setopt'
helloworld.cpp:(.text+0xe7): undefined reference to `curl_easy_setopt'
helloworld.cpp:(.text+0xf3): undefined reference to `curl_easy_perform'
helloworld.cpp:(.text+0x132): undefined reference to `curl_easy_cleanup'
helloworld.cpp:(.text+0x137): undefined reference to `curl_global_cleanup'
collect2: ld returned 1 exit status

我找不到从这里去哪里。

最佳答案

您收到的错误是链接器错误。链接器无法找到 curl 库。您需要指定链接器在链接时搜索适当库的路径。

在这种情况下(如果您在标准 lib 目录中安装了 lib curl,例如/usr/lib、r/usr/local/lib),以下应该有效:

g++ you_file_name.cpp -lcurl

否则您必须指定可以找到库的目录路径。例如:

g++ -L/curl/lib/dir -lcurl you_file_name.cpp.

当有多个库要链接时,这些事情会变得复杂,因此使用构建系统(例如 CMake)是个好主意。协助管理包含目录/库路径和其他各种事情。

关于c++ - 如何正确安装 libcurl 并将其链接到 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11625759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com