我试图在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完成。

10-01 02:11