我正在尝试创建一个回调函数,然后使用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
.