Путь к библиотеке для C ++. Потерпеть поражение? - PullRequest
3 голосов
/ 19 октября 2011

Я пытаюсь выполнить этот код на Mac.Я установил локон.Когда я ищу локон, я могу найти его под /usr/include/curl/curl.h.Ниже приведена программа, которую я хочу запустить.Взято из здесь .

#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

Что происходит?почему программа не находит путь к этому файлу?

Как я могу это исправить?

Ответы [ 2 ]

6 голосов
/ 19 октября 2011

Вы забыли связать библиотеку libcurl:

g++ simple.cpp -lcurl

Файл заголовка, такой как <curl/curl.h> (обычно), только объявляет, что группа функций существует, но не содержит фактических функций.В случае curl на OS X Lion эти функции находятся в libcurl (/usr/lib/libcurl.dylib, который указывает на /usr/lib/libcurl.4.dylib).Вы должны сообщить компоновщику (через интерфейс компилятора) об этой библиотеке, что можно сделать с помощью -lcurl.

5 голосов
/ 19 октября 2011

Программа находит включаемый файл, но не файл библиотеки.
Файл библиотеки должен быть что-то вроде libcurl.dylib или libcurl.a
Используйте это для связи с ним:

g++ simple.cpp -lcurl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...