win32和MFC调用DLL的问题
我用VS2005创建一个win32的DLL,里面使用libcurl去访问一个网页.
如果我用一个win32 console application去调用这个DLL,无论DLL里去访问的是HTTP还是HTTPS,一切都正常
但如果用MFC application去调用的时候,访问HTTP的时候正常,访问HTTPS的时候libcurl就会出现CURLE_WRITE_ERROR错误.
官方文档对此错误的描述是:
An error occurred when writing received data to a local file, or an error was returned to libcurl from a write callback.
很奇怪,在官方网站了找了半天Mailing List,我想应该是程序的问题,但没找到答案,肯求高手赐教.
我使用的包是从官方下载的:libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip
返回CURLE_WRITE_ERROR是文件sendf.c中的CURLcode Curl_client_write()函数,代码片断如下:
if(type & CLIENTWRITE_BODY) { if((conn->protocol&PROT_FTP) && conn->proto.ftpc.transfertype == 'A') {#ifdef CURL_DOES_CONVERSIONS /* convert from the network encoding */ size_t rc; rc = Curl_convert_from_network(data, ptr, len); /* Curl_convert_from_network calls failf if unsuccessful */ if(rc != CURLE_OK) return rc;#endif /* CURL_DOES_CONVERSIONS */#ifdef CURL_DO_LINEEND_CONV /* convert end-of-line markers */ len = convert_lineends(data, ptr, len);#endif /* CURL_DO_LINEEND_CONV */ } /* If the previous block of data ended with CR and this block of data is just a NL, then the length might be zero */ if(len) { wrote = data->set.fwrite_func(ptr, 1, len, data->set.out); } else { wrote = len; } if(CURL_WRITEFUNC_PAUSE == wrote) return pausewrite(data, type, ptr, len); if(wrote != len) { //就是因为执行到这里了... T_T failf(data, "Failed writing body (%d != %d)", (int)wrote, (int)len); return CURLE_WRITE_ERROR; } }