Я пытался использовать лямбда-выражение C ++ 11 с CURLOPT_WRITEFUNCTION, но программа вылетает во время выполнения с нарушением прав доступа. Я не уверен, как смотреть дальше в этом из-за недостатка знаний C ++ 11, но, возможно, у кого-то есть идея, как заставить это работать.
Функция:
#ifndef CURL_GET_H
#define CURL_GET_H
#include <curl/curl.h>
#include <curl/easy.h>
#include <vector>
#include <string>
std::vector<std::string> curl_get(const char* url)
{
CURL *curl;
CURLcode res;
std::vector<std::string> content;
auto curl_callback = [](void *ptr, size_t size, size_t nmemb, void *stream) -> size_t {
// does nothing at the moment due to testing...
return size * nmemb;
};
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/aaa.txt");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return content;
}
#endif // CURL_GET_H
Ошибка:
Unbehandelte Ausnahme bei 0x000000cc в lpip_dl.exe: 0xC0000005: Zugriffsverletzung bei Position 0x00000000000000cc.
(нарушение доступа в позиции 0x00000000000000cc)
Случается, когда curl хочет использовать обратный вызов:
wrote = data->set.fwrite_func(ptr, 1, len, data->set.out);