未调用 libcURL 进度函数
libcURL Progress Function not being called
cURL版本/操作系统是7.15和Red Hat 5,这些都是一成不变的,所以不能改变它们。
根本不调用的实际进度函数
int CurlUtil::progressCallback(void *clientp, double dltotal, double dlnow,
double ultotal, double ulnow)
{
DEFN_METHOD_NAME( "progressCallback" );
EX_ENTRY_EXIT();
EX_DEBUG("Total downloaded " << dlnow << "/" << dltotal);
EX_DEBUG("Total uploaded " << ulnow << "/" << ultotal);
CurlUtil* curlUtil = (CurlUtil*)clientp;
// If you return anything but 0, curl will abort transfer
return (true == curlUtil->killed()) ? 1 : 0;
}
设置代码:
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(m_curl, CURLOPT_PROGRESSFUNCTION, CurlUtil::progressCallback);
curl_easy_setopt(m_curl, CURLOPT_PROGRESSDATA, this)
其中 CurlUtil 是代码所在的类。 CURLOPT_DEBUGFUNCTION工作正常,并以相同的方式设置在完全相同的功能中。
问题在于调用回调函数的约定。它需要为 gcc 编译器__cdecl或/Gd 选项。如果函数已经是静态的,请检查编译器选项。C++成员函数都使用 thiscall 调用约定进行调用。查看以下链接,如果您想拥有负责处理传输状态和统计信息的类,它提供了更简洁的方式:如何在 libcurl 中使用成员函数指针
PS:当我交叉验证时,我的编辑速度较慢。因此发布作为答案。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- C++ Libcurl curl_easy_getinfo在CURLOPT_XFERINFOFUNCTION函数中不返回
- 从C++使用 libcurl 的下载进度函数
- 对libcurl函数的未定义引用
- libcurl SMTP 读取函数返回有趣的值分段错误 c++
- libcurl, 如何为每个句柄附加不同的回调函数
- 未调用 libcURL 进度函数
- libcurl在write_data()函数处爆炸
- 在CentOS 6.6中,libcurl-devel缺少函数定义
- 无法与 libcurl 链接 - 对多个函数的未定义引用