网站导航的建设,wordpress 如何添加模板,重庆市建设工程信息网中标公告,征婚网站做原油因为开发cad需要请求服务器的数据#xff0c;再次之前我在服务器搭设了webapi用户传递数据#xff0c;所以安装了libcurl在objectarx中使用数据。 Open VS2012 x64 Native Tools Command Prompt补充地址#xff1a;
我在此将相关的引用配置图片#xff0c;cad里面的应用和…因为开发cad需要请求服务器的数据再次之前我在服务器搭设了webapi用户传递数据所以安装了libcurl在objectarx中使用数据。 Open VS2012 x64 Native Tools Command Prompt补充地址
我在此将相关的引用配置图片cad里面的应用和常规的一致。 所有的使用与现在的案例一致但是我这里发生了一个错误我在此记录一下在下面这段代码当中我运行程序cad报错内存泄漏定位问题之后发现问题出错在这句
CURLcode res curl_easy_perform(curl);我查看了很多文章都无法解决后来发现其实是此处的数据传递错误我的指针传递错误导致的问题 这里是问题代码片段
inline BOOL webApi::DownloadFile(const char* Filepath)
{// ...curl_easy_setopt(curl, CURLOPT_URL, combinePath.c_str());curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, webApi::curlWriteFunction);curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);CURLcode result curl_easy_perform(curl);fclose(fp);curl_easy_cleanup(curl);curl_global_cleanup();return TRUE;
}可以看到在这句代码中我传入了一个指针 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, webApi::curlWriteFunction);问题出现这里是因为此处需要调用的是回调函数指针但是我的代码中使用的是实例函数指针导致传值错误从而引发了后面的问题。 此处修改为
webapi.h
static size_t downloadCallback(void *buffer, size_t sz, size_t nmemb, void *writer);webapi.cpp
size_t webApi::downloadCallback(void* buffer, size_t sz, size_t nmemb, void* writer)
{std::string* psResponse (std::string*)writer;size_t size sz * nmemb;psResponse-append((char*)buffer, size);return sz * nmemb;
}之后修改原来的代码段
std::string strTmpStr;
CURL *curl curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, downloadCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, strTmpStr);
CURLcode res curl_easy_perform(curl);
curl_easy_cleanup(curl);
std::string strRsp;问题解决。