コールバック関数を作成してから、取得したコンテンツをを使用してファイルに書き込もうとしていますlibcurl
。プログラムはで正常に動作Linux
しますがWindows
、fopen
操作はで失敗しsolarix_x86
ます。myvector
コピーするURLファイルのリストが含まれ、プラットフォーム( 、 )PATH_SEPARATOR
に応じて文字列パスをフォーマットするマクロです。Unix
Windows
vector<string>::iterator it;
for( it=myvector.begin() ; it < myvector.end(); it++ ){
string dest = "/home/files/" + PATH_SEPARATOR + *it // PATH_SEPARATOR IS A MACRO
curl_easy_setopt(curl, CURLOPT_URL, it->c_str());
curl_easy_setopt(curl, CURL_WRITEFUNCTION, write_data);
file = fopen(dest.c_str(), "w+b");
if(file == NULL){
throw std::runtime_error("FILE IS NULL, CAN'T OPEN\n");
}
curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
curl_easy_perform(curl);
fclose(file);
}
そして機能write_data
:
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream){
size_t written = fwrite(ptr, size, nmemb, (FILE*)stream);
return written;
}
旗に関係しているのではないかと"w+b"
思います。
** * ** * ** * ***アップデート** * ** * ** * *
errno=2
。