C++ CURL下载_进度抛出SIGSEGV
我必须在download_progress中更新进度条值,但每当我试图更新myClass的成员函数时,它总是发送分段错误 这是我的代码: 试图将文件从url下载到文件名,但它一直抛出SIGSEGV 为什么我不能在上面的代码中更新myClass的成员。。。 任何帮助都将不胜感激 谢谢C++ CURL下载_进度抛出SIGSEGV,c++,linux,c++11,curl,libcurl,C++,Linux,C++11,Curl,Libcurl,我必须在download_progress中更新进度条值,但每当我试图更新myClass的成员函数时,它总是发送分段错误 这是我的代码: 试图将文件从url下载到文件名,但它一直抛出SIGSEGV 为什么我不能在上面的代码中更新myClass的成员。。。 任何帮助都将不胜感激 谢谢 首先,你需要 &myClass::download_progress 转换为静态函数,并将其简单地调用为: &download_progress 您没有发送要调用的userdata。您的下载方法应
首先,你需要
&myClass::download_progress
转换为静态函数,并将其简单地调用为:
&download_progress
您没有发送要调用的userdata。您的下载方法应如下所示:
curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, (curl_progress_callback)&myClass::download_progress);
curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, this);
此外,您的下载进度应标记为静态:
class myClass{
int percent;
ProgressBar bar;
public:
int download(const char* url, const char* filename, int enable_progress);
static int download_progress(void *p, double dl, double dlnow, double ul, double ulnow);
};
类内的静态函数??或globalprogress Bar更新,但它会导致exe崩溃,并引发以下错误:“/root/Desktop/test”中的**错误:malloc:memory corruption fast:0x00007fffd003f411***@Bruno ferreirat问题出在其他地方。
class myClass{
int percent;
ProgressBar bar;
public:
int download(const char* url, const char* filename, int enable_progress);
static int download_progress(void *p, double dl, double dlnow, double ul, double ulnow);
};