使用kubuntu上的code :: blocks对curlpp的未定义引用

时间:2015-03-18 10:17:58

标签: c++ include-path curlpp

我有curlpp库的问题。我将解释我遵循的步骤。


第1步:下载并安装

下载网站:Download

$./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&amp;)
  • 未明确引用curlpp :: Easy :: setopt(curlpp OptionBase :: *)
  • 未明确引用curlpp curlpp :: Easy :: setopt(curlpp OptionBase :: *)

如图所示添加-lcurlpp后:我收到以下错误: picture 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:référenceausymbolenondéfini   «curl_easy_setopt @@ CURL_OPENSSL_3»   //usr/lib/x86_64-linux-gnu/libcurl.so.4:错误添加符号:DSO   从命令行中丢失了collect2:错误:ld返回1退出状态   处理以状态1(0分钟,0秒(秒))终止0   错误,0警告(0分钟,0秒(s))

2 个答案:

答案 0 :(得分:1)

编译时需要与-lcurlpp相关联链接你的代码。

答案 1 :(得分:0)

使用Eclipse,我从未让curlpp example01工作。即使在尝试设置连接器和包含之后。但我能够从终端编译它:

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

因此,如果Eclipse不适合您,我建议您尝试使用终端。