Неопределенная ссылка на curlpp с использованием code::blocks на kubuntu

У меня проблема с библиотекой curlpp. Я объясню шаги, которые я выполнил.


Шаг 1: загрузка и установка

скачать сайт: Скачать

$./configure
$make
$sudo make install
  • Заголовочные файлы curlpp находятся в / usr / local / include /
  • Файлы библиотеки curlpp находятся в / usr / local / lib /

Шаг 2: Я использовал следующий код:

#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
#include <curlpp/Exception.hpp>


using namespace std;

int main()
{
    char *url = (char*) "http://dbpedia.org/sparql";

    string queryString = "PREFIX dbp: <http://dbpedia.org/resource/> "
        "PREFIX dbp2: <http://dbpedia.org/ontology/> "
        "SELECT ?abstract "
        "WHERE { "
            "dbp:Nikola_Tesla dbp2:abstract ?abstract . "
            "FILTER langMatches(lang(?abstract), 'en')"
        "}";

    try
    {
        curlpp::Easy request;
        string parameters = "query=" + curlpp::escape(queryString);

        request.setOpt(new curlpp::options::Url(url));
        request.setOpt(new curlpp::options::Verbose(true));
        request.setOpt(new curlpp::options::PostFields(parameters));

        request.perform();
    }

    catch (curlpp::RuntimeError & e)
    {
        std::cout << e.what() << std::endl;
    }

    catch (curlpp::LogicError & e)
    {
        std::cout << e.what() << std::endl;
    }
    return 0;

}//end function main

ошибки

  • Неопределенная ссылка на curlpp :: Easy: Easy ()
  • Неопределенная ссылка на curlpp :: escape (const std:: string &)
  • Неопределенная ссылка на curlpp :: Easy:: setopt (curlpp OptionBase:: *)
  • Неопределенная ссылка на curlpp curlpp::Easy::setopt(curlpp OptionBase:: *)
  • и т.п.

После добавления -lcurlpp, как показано на рисунке: я получил следующие ошибки:фото 1

g ++ -LSQLiteCpp-master / debug -o bin / Debug / EntityLinking obj / Debug / DataLoader.o obj / Debug / Entity.o obj / Debug / Fact.o obj / Debug / FactClass.o obj / Debug / Link.o obj /Debug/main.o obj / Debug / ManageDb.o obj / Debug / SQLiteCpp-master / sqlite3 / sqlite3.o obj / Debug / tinyxml / tinystr.o obj / Debug / tinyxml / tinyxml.o obj / Debug / tinyxml / tinyxmlerror.o obj / Debug / tinyxml / tinyxmlparser.o -lpthread -ldl -lcurlpp SQLiteCpp-master / debug / libSQLiteCpp.a / usr / bin / ld: obj / Debug / main.o: ссылка на символ без определения "curl_easyto" @CURL_OPENSSL_3 "//usr/lib/x86_64-linux-gnu/libcurl.so.4: ошибка при добавлении символов: DSO отсутствует в командной строке collect2: ошибка: ld вернул 1 состояние выхода Процесс завершен со статусом 1 (0 минут), 0 секунд (с)) 0 ошибок, 0 предупреждений (0 минут, 0 секунд)

2 ответа

Решение

Вам нужно связаться с -lcurlpp при компиляции и компоновке вашего кода.

Используя Eclipse, я никогда не работал curlpp example01. Даже после попытки настроить компоновщики и включения. Но я смог скомпилировать его из терминала:

g++ -o exe_name exe_name.cpp -L/usr/local/lib -lcurl -lcurlpp -I/usr/local/include

Поэтому я бы предложил попробовать терминал, если Eclipse не работает для вас.

Другие вопросы по тегам