Завиток CURLE_COULDNT_RESOLVE_HOST в режиме отладки - PullRequest
0 голосов
/ 27 ноября 2010

Я использую curl для доступа к файлу по указанному URL. Я использую VC ++ 2010 и curl 7.21.2 (я сам скомпилировал) с wxWidgets для пользовательского интерфейса (все встроенные в юникоде, кроме curl). У меня нет проблем в моей сборке релиза, но тот же код (ниже) завершается неудачно в отладочной сборке с ошибкой CURLE_COULDNT_RESOLVE_HOST для того же URL.

Вот код:

CURL * pEasyHandle = curl_easy_init();
if(!pEasyHandle) 
    return wxEmptyString;

CURLcode curlcode; 
curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_VERBOSE, 1); // this is in ifdef _DEBUG actually

curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_HTTPGET, 1);

curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_URL, url.ToStdString()); 

curl_easy_setopt(pEasyHandle, CURLOPT_WRITEFUNCTION, writer);
curl_easy_setopt(pEasyHandle, CURLOPT_TIMEOUT, 10);
curl_easy_setopt(pEasyHandle, CURLOPT_CONNECTTIMEOUT , 10);

wxString fileListString = wxEmptyString;
curl_easy_setopt(pEasyHandle, CURLOPT_WRITEDATA, &fileListString);

curlcode = curl_easy_perform(pEasyHandle); // post away!

if(curlcode == CURLE_OK)
{
          // cannot enter here in debug mode
}
else
{
    m_errorString = curl_easy_strerror(curlcode);
    wxMessageBox(m_errorString);
}

curl_easy_cleanup(pEasyHandle);

Ответы [ 2 ]

2 голосов
/ 27 ноября 2010

Кажется, что следующая строка:

curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_URL, url.ToStdString());

Если мои предположения верны, ToStdString возвращает std :: string, а не C-строку.curl - это библиотека C, поэтому она ожидает char * -s.

Не могли бы вы сказать, что такое тип url?

0 голосов
/ 30 января 2013

Вы можете заменить url.ToStdString() на url.c_str().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...