Phiên bản cURL/OS đang được đề cập là 7.15 và Red Hat 5, chúng được đặt trong đá mặc dù vậy không thể thay đổi chúng.libcURL Progress Chức năng không được gọi là
Chức năng tiến bộ thực tế mà không được gọi là ở tất cả các mã
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;
}
Các thiết lập:
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)
đâu CurlUtil là lớp rằng mã tồn tại trong The CURLOPT_DEBUGFUNCTION hoạt động tốt và là. thiết lập trong cùng chức năng chính xác theo cùng một cách.
Bạn có chắc chắn 100% dữ liệu thực sự đang được chuyển không? Nó cũng có thể không được gọi nếu quá trình chuyển quá nhanh. Là 'progressCallback' tĩnh? –
Nếu 'progressCallback()' không được khai báo là 'static', nó cần phải là. Bạn không thể sử dụng một phương thức lớp không tĩnh như một cuộc gọi lại (trừ khi bạn quấn nó trong một đoạn). –
... và nếu nhận xét của Remy hoặc Collin hợp lệ, câu hỏi là sai ... –