Probleme mit libcurl CURLOPT_WRITEFUNCTION
-
Guten Abend die Herren,
ich schreibe grade eine Wrapperklasse für libcurl um .json Datein runterladen zu können. Folgendes Problem:
size_t libcurlWrapper::write_data(void *ptr, size_t size, size_t nmemb, FILE *stream){ size_t written = fwrite(ptr, size, nmemb, stream); return written; } bool libcurlWrapper::performRequest(char* outfilename){ if(m_curl){ m_fp = fopen(outfilename, "wb"); curl_easy_setopt(m_curl, CURLOPT_URL, m_url); curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, m_fp); m_res = curl_easy_perform(m_curl); curl_easy_cleanup(m_curl); fclose(m_fp); return true; }else{ return false; } }libcurlwrapper.cpp:-1: In member function 'bool libcurlWrapper::performRequest(char*)': libcurlwrapper.cpp:24: Fehler: invalid use of member function (did you forget the '()' ?) curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, write_data); ^Ich habe diverse Beispiele im Internet gefunden die genau so wie in meinem Codebeispiel vorgehen. Verstehe nicht was hier schief läuft.
Ich hoffe ihr könnt mir da weiter helfen.Mfg
-
Das riecht irgendwie nach einem Fehler, dessen eigentliche Ursache durch irgendwelches Makrogeraffel verdeckt wird, wie es in C-Bibliotheken leider oft anzutreffen ist.
Ohne jetzt die genaue Ursache bestimmen zu können, würde ich dir auf jeden Fall raten erstmal sicherzustellen, dass der Compiler weiss, dass du einen C-Header einbindest:extern "C" { #include <curl.h> }... und es dann nochmal versuchen. Möglicherweise hilft das schon.
Gruss,
Finnegan
-
Ich denke, die Meldung bezieht sich auf write_data. Adressen von Memberfunktionen erhält man nur mit & vor dem Funktionsnamen.
Ist die Funktion static? Sonst kommt die nächste Meldung.
-
Es hat geholfen die Funktion static zu machen! Finnegan dein Ansatz hat leider nicht zum Erfolg geführt. Trotzdem Danke
Schönen Abend noch