我试图在Mac上执行此代码。我已经安装好卷发了。当我搜索curl时,可以在/usr/include/curl/curl.h
下找到它。下面是我要运行的程序。取自here。
#include <iostream>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
当我尝试编译程序时。见下文。
g++ simple.cpp
Undefined symbols:
"_curl_easy_perform", referenced from:
_main in cciFNPkt.o
"_curl_easy_init", referenced from:
_main in cciFNPkt.o
"_curl_easy_setopt", referenced from:
_main in cciFNPkt.o
"_curl_easy_cleanup", referenced from:
_main in cciFNPkt.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
这是怎么回事?程序为什么找不到该文件的路径?
我该如何解决?
最佳答案
您忘记了链接libcurl库:
g++ simple.cpp -lcurl
头文件(例如
<curl/curl.h>
)(通常)仅声明存在一组功能,但不包含实际功能。对于OS X Lion上的curl,这些功能在libcurl(/usr/lib/libcurl.dylib,指向/usr/lib/libcurl.4.dylib)中。您需要(通过编译器前端)告诉链接程序该库的信息,可以通过-lcurl
完成。