【发布时间】:2015-04-13 02:13:17
【问题描述】:
我正在尝试将 lambda 传递给 CURLOPT_WRITEFUNCTION。
该函数需要一个静态函数,但是,我从 this question 了解到 lambda 将被隐式转换,我可以从 lambda 调用成员函数。
auto callback = [](char * ptr_data, size_t size, size_t nmemb, string * writerData)
->size_t
{
if(writerData == NULL)
return 0;
size_t data_size = size * nmemb;
writerData->append(ptr_data, data_size);
return (int)data_size;
};
CURLcode code = curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, callback);
这实际上可以编译,但是 curl 段错误:Segmentation fault: 11
我粘贴了完整的示例here。
【问题讨论】:
-
看着你的 sn-p,你不希望:
code = curl_easy_setopt(conn, CURLOPT_WRITEDATA, &buffer);在你调用CURLOPT_WRITEFUNCTION之前被调用吗?否则不会设置传递给回调的指针。 -
@JesseGood,顺序无关紧要,只要我在调用
curl_easy_perform之前设置它们。