- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我尝试将 C++11 lambda 表达式与 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 in lpip_dl.exe: 0xC0000005: Zugriffsverletzung bei Position 0x00000000000000cc.
(Access violation at position 0x00000000000000cc)
当 curl 想要使用回调时发生:
wrote = data->set.fwrite_func(ptr, 1, len, data->set.out);
最佳答案
您实际上可以通过将 lambda 函数转换为函数指针来实现。您可以先制作一个 typedef 以使转换更容易。
typedef size_t(*CURL_WRITEFUNCTION_PTR)(void*, size_t, size_t, void*);
然后你使用static_cast。
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, static_cast<CURL_WRITEFUNCTION_PTR>(curl_callback));
注意:要转换为C函数指针,只能使用空捕获[]。
关于c++ - 我可以将 libcurls CURLOPT_WRITEFUNCTION 与 C++11 lambda 表达式一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624667/
我用过 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 和 size_t write_data(void *ptr, size_t
我正尝试将此 curl 函数包含到我的类中,但在使用 CURLOPT_WRITEFUNCTION 时遇到了问题。编译后没有找到我的解决方案。还尝试了一些基于 stackoverflow 的东西没有可用
是否通过 CURLOPT_WRITEFUNCTION 从调用 curl_easy_perform() 的同一线程调用指定给 cURL 的函数? void read_http() { curl_
My Class 直接从链接下载文件: MyClass{ function download($link){ ......
我正在尝试使用 libcurl 将 XML 数据发布到某种网络服务。我正在使用 tinyxml 创建一个 xml 文档,我希望能够使用 curl 发布它并使用 tinyxml 解析 XML 响应。我已
请举例说明一下好吗? 最佳答案 我知道这是一个老问题,但也许我的回答会对您或其他人有所帮助。 WRITEFUNCTION 可用于处理流入的文本或根据某些条件中止下载。这是一个简单地将所有文本放入大写字
我尝试将 C++11 lambda 表达式与 CURLOPT_WRITEFUNCTION 结合使用,但程序在运行时因访问冲突而崩溃。由于缺乏 C++11 知识,我不确定如何进一步研究这个问题,但也许其
我是一名优秀的程序员,十分优秀!