2

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


第一步:下载安装

下载网站:下载

$./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: référence au symbole non défini «curl_easy_setopt@ @CURL_OPENSSL_3» //usr/lib/x86_64-linux-gnu/libcurl.so.4:添加符号时出错:命令行collect2中缺少DSO:错误:ld返回1退出状态进程以状态1终止(0分钟) , 0 秒) 0 错误, 0 警告 (0 分钟, 0 秒)

4

2 回答 2

1

-lcurlpp编译和链接代码时需要链接。

于 2015-03-18T10:19:59.560 回答
0

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

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

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

于 2015-12-06T04:48:48.857 回答