C ++:Libcurl curl_easy_init()给出了访问冲突错误并导致程序崩溃

时间:2010-10-24 15:40:25

标签: c++ curl crash libcurl access-violation

我正在尝试将libcurl与我正在制作的程序一起使用,但我遇到了一些问题。到目前为止,我只尝试过libcurl网站上的示例,但是一旦程序进入curl初始化,它们就会崩溃。

我目前的代码:

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

int main(int argc, char *argv[])
{
    CURL *curl;
    CURLcode res;

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

        curl_easy_cleanup(curl);
    }

    return 0;
}

我还确保编译器和链接器可以找到资源,并且dll文件(libcurl.dll)位于程序的文件夹中,但它仍然会崩溃。 我尝试使用VS2010进行调试,它在初始化函数curl_easy_init()中给出了“访问冲突”错误。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

这几乎肯定是DLL的不匹配。首先检查您的PATH是否有任何旧版本或不同版本的libcurl.dll。

我刚刚使用VS2010专业版为MSVC 7.18.0 / Win32 generic针对此版本构建了您的代码段,并且运行正常。

答案 1 :(得分:1)

程序在我的机器上编译好了(ubuntu盒子):

#g++ -lcurl url.c -o url

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Garry's Mod Finland - Etusivu</title>
    <meta h ....

答案 2 :(得分:0)

您可以尝试在发布编译中运行该程序,看看它是否正常运行。我注意到我在Windows上使用了一些开源库,如果你将调试版本与OS库的发布版本链接起来,那么事情就不会很好。我通常会设置编译器选项以链接调试版本中的库的调试版本以及发布版本中库的发行版本。

不幸的是,我从来没有费心去追查这种情况发生的原因。这是值得尝试的。