2014-11-24 14 views
5

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.

+1

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? –

+2

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). –

+0

... và nếu nhận xét của Remy hoặc Collin hợp lệ, câu hỏi là sai ... –

Trả lời

1

sự cố xảy ra với quy ước gọi điện của chức năng gọi lại. Nó cần phải __cdecl hoặc/Gd tùy chọn cho trình biên dịch gcc. Vui lòng kiểm tra các tùy chọn trình biên dịch nếu chức năng đã được tĩnh. Các hàm thành viên C++ được gọi với các quy ước gọi điện này. Nhìn vào liên kết sau, nó cung cấp cách sạch hơn nếu bạn muốn có lớp chịu trách nhiệm xử lý trạng thái chuyển và thống kê: How can I use a member function pointer in libcurl

PS: Chỉnh sửa của tôi chậm hơn khi tôi xác minh chéo. Do đó đăng bài như một câu trả lời.

Các vấn đề liên quan