Win32 C ++:静态LibCurl应用程序在清理时崩溃

时间:2011-09-07 04:31:29

标签: c++ visual-c++ curl libcurl

我正在尝试编写一个使用libcurl进行http任务的Win32应用程序。我有一个简单的例子,可以在Mac OSx和Ubuntu平台上完美运行。然而,当我在Win32上尝试它时它会爆炸。

我使用nmake创建一个静态库

  

nmake / f makefile.vc mode = static

这将创建lib:libcurl_a.lib

我正在链接到这个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;

}

这似乎是编译和链接correclty。但是应用程序在curl_easy_cleanup调用时崩溃了。

错误:

  

线程'Win32 Thread'(0x1230)已退出,代码为0(0x0)。   HEAP [cURL_Test.exe]:为RtlValidateHeap指定的地址无效(   00190000,00A01388)Windows触发了一个断点   cURL_Test.exe。

     

这可能是由于堆的损坏,这表明存在错误   cURL_Test.exe或它已加载的任何DLL。

有没有人遇到过这个问题,或者告诉我忘记了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的应用程序和CURL lib喜欢的不同MS运行时库版本可能存在问题。检查应用程序和库是否使用相同的/ MD(或/ MT)标志进行编译。

Using libcurl on windows, in my c++ project, with visual studio, does not work because string get corrupted