Использование libcurl в Windows в моем проекте c ++ с Visual Studio не работает, потому что повреждена строка - PullRequest
0 голосов
/ 06 января 2011

Как объясняется в заголовке, я пытаюсь использовать libcurl C API для отправки простого http-запроса.

Я использую Windows в качестве ОС, C ++ в качестве языка, Visual Studio 2008 в качестве IDE.

Мой код очень прост:

Я инициализирую curl: CURLcode init = curl_global_init(CURL_GLOBAL_ALL);

Я инициализирую свою ручку: CURL* handle = curl_easy_init();

Я установил URL: CRULcode set_url = curl_easy_setopt(handle, CURLOPT_URL, "http://www.example.com")

Я отправляю запрос: CURLcode submit = curl_easy_perform(handle);

В результате коды возврата init и set_url равны 0 (CURLE_OK), вспомогательный код возврата равен 2 (CURLE_URL_MALFORMAT).

Когда я отлаживаю, я понимаю, что мой URL поврежден, и вместо http://www.example.com он становится: xj: в режиме выпуска и 0|: в режиме отладки. Это происходит, как только я ввожу curl_easy_setopt

Строка URL определенно повреждена.

Должна быть одна из моих настроек, которая неверна, поэтому вот сводка моих настроек (в режиме отладки)

  • Использование MFC в общей библиотеке DLL
  • Использовать многобайтовый набор символов
  • препроцессор включает CURL_STATICLIB
  • Многопоточная отладочная DLL / MDd
  • Связывание againgst libcurld.lib (версия 7.21.3) с использованием проекта vc6curl.dsw
  • также связывает againgst ws2_32.lib wldap32.lib

1 Ответ

3 голосов
/ 06 января 2011

"Связывание againgst libcurld.lib (версия 7.21.3) компилируется с использованием проекта vc6curl.dsw "

Это проблема.

Статические библиотеки должны бытьпостроен с использованием того же компилятора и тех же библиотек времени выполнения (/MDd).

Этого можно избежать с помощью DLL-версии libcurl.

...