-1
使用libcurl
處理小型應用程序。下載了源碼tar文件並編譯完成並一切正常。從C++使用libcurl的下載進度函數
跟在這個progress function例子中,它並不像它應該那樣工作。
設置回調函數來顯示進度
curl_easy_setopt(m_curl, CURLOPT_XFERINFOFUNCTION, &FileTransfer::progressCallback);
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0);
是
int FileTransfer::progressCallback(void* clientp, curl_off_t dlTotal, curl_off_t dlNow, curl_off_t ulTotal, curl_off_t ulNow)
{
fprintf(stderr, "UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
" DOWN: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
"\r\n",
ulNow, ulTotal, dlNow, dlTotal);
return 0;
}
其打印
........
UP: 4233172 of 0 DOWN: 0 of 2588672
UP: 4233172 of 0 DOWN: 0 of 2588672
UP: 4233172 of 0 DOWN: 0 of 2588672
UP: 4233172 of 0 DOWN: 0 of 2588672
.........
和是錯誤的。我沒有任何上傳(其中爲4233172來自)和dlTotal
是顯示dlNow
值(即下載的字節)和dlNow
總是0
此外,CURLOPT_XFERINFODATA
不工作。按照該文件,這可以是任何東西,我試圖通過this
,一些隨機的結構,以及一個int和似乎沒有任何要傳遞給回調函數(void* clientp
總是空)
使用最新版本libcurl
7.52.1
出示您的[MCVE]請不要標記語言無關。 –
@LightnessRacesinOrbit'libcurl'是一個'c'庫,並在'C++'應用程序中使用它。請問哪個標籤是錯的?謝謝。 – ramtheconqueror
'FileTransfer :: progressCallback'是一個非靜態成員函數,對嗎?嘗試包裝它並將指針傳遞給普通的舊函數。 – Phillip