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 を追加した後: 次のエラーが発生しました:
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: シンボルの追加エラー: DSO がコマンド ライン collect2 にありません: エラー: ld が 1 終了ステータスを返しました プロセスはステータス 1 (0 分) で終了しました、0 秒) 0 エラー、0 警告 (0 分、0 秒)