libcurl
を使用して小さなアプリケーションで作業しています。ソースtarファイルをダウンロードし、コンパイルして、ここまで細かくコンパイルしました。C++のlibcurlのダウンロードの進行機能を使用
これに続くprogress functionこれは想定されていない例です。
は
........
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
.........
を印刷し、間違っているれる
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;
}
で進行
curl_easy_setopt(m_curl, CURLOPT_XFERINFOFUNCTION, &FileTransfer::progressCallback);
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0);
を示すためのコールバック関数を設定します。私はdlNow
値(すなわち、バイトをダウンロード)とdlNow
を示しているもの(ここで、4233172から来ている)とdlTotal
をアップロードしていないよ。また、CURLOPT_XFERINFODATA
が機能していません常に0
されます。ドキュメントごとのように、これは何もすることができ、私はthis
を渡してみました、いくつかのランダムな構造体、およびint型と何がコールバック関数に渡されるようだ(void* clientp
は常にnullである)
最新libcurl
バージョン7.52.1を使用して
があなたの[MCVE]してください現在、そして無関係な言語をタグ付けしていない:
あなたは、クラスへのポインタを渡される静的 メンバ関数を使用して比較的容易にこの「限界」を克服することができます。 –
@LightnessRacesinOrbit 'libcurl'は' c'ライブラリであり、 'C++'アプリでそれを使用しています。間違ったタグはどちらですか?ありがとう。 – ramtheconqueror
'FileTransfer :: progressCallback'は非静的メンバー関数です、そうですか?それをラップして、ポインタを普通の古い関数に渡してみてください。 – Phillip