我正在尝试编写一个使用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。
有没有人遇到过这个问题,或者告诉我忘记了什么?
谢谢!
答案 0 :(得分:1)
您的应用程序和CURL lib喜欢的不同MS运行时库版本可能存在问题。检查应用程序和库是否使用相同的/ MD(或/ MT)标志进行编译。