Win32 C ++: статический сбой приложения LibCurl при очистке - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь написать приложение Win32, которое использует libcurl для задач http. У меня есть простой пример, который отлично работает на платформах Mac OSx и Ubuntu. Однако, когда я пробую его на Win32, он взрывается.

Я использовал nmake для создания статической библиотеки

nmake / f makefile.vc mode = static

Это создает lib: libcurl_a.lib

Я ссылаюсь на эту библиотеку и добавил это определение к моим определениям препроцессора:

CURL_STATICLIB

Простой пример приложения:

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
    res = curl_easy_perform(curl);

    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  return 0;

}

Кажется, это компилирует и связывает корректность. Но приложение вылетает при вызове curl_easy_cleanup.

Ошибка:

Поток 'Win32 Thread' (0x1230) вышел с кодом 0 (0x0). HEAP [cURL_Test.exe]: неверный адрес, указанный для RtlValidateHeap ( 00190000, 00A01388) Windows запустила точку останова в cURL_Test.exe.

Это может быть связано с повреждением кучи, что указывает на ошибку в cURL_Test.exe или любую из загруженных им библиотек DLL.

Кто-нибудь сталкивался с этой проблемой или, может быть, скажите мне, что я забыл?

Спасибо!

1 Ответ

1 голос
/ 07 сентября 2011

Может быть проблема с разными версиями библиотеки времени выполнения MS, которые нравятся вашему приложению и CURL lib.Убедитесь, что приложение и библиотека собраны с одинаковыми флагами / MD (или / MT).

Использование libcurl в Windows в моем проекте на c ++ с Visual Studio не работает, поскольку повреждена строка1004 *

...